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
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
|
|
|