You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

27 lines
755 B

import functools
import logging
function_call_logger = logging.getLogger("call")
# decorator
def log_function_call(func):
if logging.getLogger().level != logging.DEBUG:
return func
@functools.wraps(func)
def wrapper(*args, **kwargs):
function_call_logger.debug(
"calling {func}({arguments})".format(
func=func.__name__,
arguments=", ".join(
[str(value) for value in args]
+ [f"{key}={value}" for key, value in kwargs.items()],
),
),
)
return_val = func(*args, **kwargs)
function_call_logger.debug(f"{func.__name__}() returned {return_val}")
return return_val
return wrapper