我对 Python 相当陌生。我一直在修改我们现有的 python 模块以改进日志记录。我遇到了一个要求,即使用需要记录的特定键(上下文)以及进入和退出点来标记每个方法调用(和退出)。该密钥应该在根方法中生成并传递给进一步的方法调用。
我对我应该遵循的方法感到困惑。有没有办法在现有方法接口中动态插入额外的参数可能是使用 AOP 或注释?
或者我将这个问题改写为简短-
如何将额外的参数传递给后续的方法调用?
谢谢潘克斯
如果您对所有这些方法都有一个记录器实例,也许您可以让根方法在输入时在记录器上设置上下文,并在退出时将其删除。
@contextlib.contextmanager
def setup_login(logger, context):
old_name = logger.name
logger.name = context
yield
logger.name = old_name
根方法变为:
def root():
context = compute_context()
with setup_login(logger, context):
# call other methods
我使用logger.name
了 ,但您可以使用 logger 的任何其他属性,或使用任何其他单例来共享全局状态。