def logging_decorator()

in packages/cdk/lib/wes_adapter/amazon_genomics/util/method_logger.py [0:0]


    def logging_decorator(func):
        function_name = func.__name__
        arg_names = inspect.signature(func).parameters

        @wraps(func)
        def wrapper(*args, **kwargs):
            all_args = {**dict(zip(arg_names, args)), **kwargs}
            # Don't log 'self' and also use the objects logger if it has one.
            self = all_args.pop("self", None)
            if logger:
                log = logger
            elif self and self.logger:
                log = self.logger
            else:
                log = logging.getLogger(func.__module__)

            if log_input:
                log.log(level, f"{function_name} called with: {all_args}")
            try:
                result = func(*args, **kwargs)
                if log_output:
                    log.log(level, f"{function_name} returned: {result}")
                return result
            except Exception as e:
                if log_exceptions:
                    log.error(level, f"Caught exception calling {function_name}", e)
                raise e

        return wrapper