【发布时间】:2021-12-15 13:00:53
【问题描述】:
我有一个负责记录的装饰器。例如。像这样:
import logging
import functools
from typing import Callable
def log_container(func: Callable, logger=None):
if logger is None:
logger = logging.getLogger("default")
@functools.wraps(func)
def wrapper(*args, **kwargs):
logger.info(f"{func.__qualname__} started.")
result = func(*args, **kwargs)
logger.info(f"{func.__qualname__} ended.")
return result
return wrapper
我有一个具有不同记录器作为属性的类,我想将该记录器作为装饰器参数。这可能吗?如果有,怎么做?
class Dummy:
logger = logging.getLogger("Dummy")
@log_container(logger=Dummy.logger)
def do_something(self):
pass
【问题讨论】:
-
你试过 self.logger 了吗?类属性可以在实例上找到。
-
@Yuri self 在方法装饰中使用时不起作用。
标签: python logging python-decorators python-class