Source code for python_yapi.utils

import logging
import time


[docs]def log(func=None, *, verbosity=1): """ Decorator for logging :param func: :param verbosity: verbosity level(default as 1) :return: decorator or function """ def decorator(func): def wrapper(*args, **kwargs): if verbosity > 0: func_merged_args = list([str(arg) for arg in args]) + [f'{key}={value}' for key, value in kwargs.items()] # todo handle logging password logging.info(f"Call {func.__name__} args: {', '.join(func_merged_args)}") start_time = time.time() result = func(*args, **kwargs) elapsed = round(time.time() - start_time, 2) if verbosity > 1: logging.info(f"Call {func.__name__} elapsed time: {elapsed}s result: {result}") return result return wrapper return decorator if func is None else decorator(func)