import logging
import functools
logger = logging.getLogger(__name__)
[docs]
def log_function_call(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
args_repr = [repr(a) for a in args]
kwargs_repr = [f"{k}={v!r}" for k, v in kwargs.items()]
signature = ", ".join(args_repr + kwargs_repr)
logger.info(f"Calling {func.__name__}({signature})")
try:
result = func(*args, **kwargs)
logger.info(f"{func.__name__} returned {result!r}")
return result
except Exception as e:
logger.exception(f"Exception occurred in {func.__name__}")
raise
return wrapper