1

我对 Python 相当陌生。我一直在修改我们现有的 python 模块以改进日志记录。我遇到了一个要求,即使用需要记录的特定键(上下文)以及进入和退出点来标记每个方法调用(和退出)。该密钥应该在根方法中生成并传递给进一步的方法调用。

我对我应该遵循的方法感到困惑。有没有办法在现有方法接口中动态插入额外的参数可能是使用 AOP 或注释?

或者我将这个问题改写为简短-

如何将额外的参数传递给后续的方法调用?

谢谢潘克斯

4

1 回答 1

0

如果您对所有这些方法都有一个记录器实例,也许您可​​以让根方法在输入时在记录器上设置上下文,并在退出时将其删除。

@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 的任何其他属性,或使用任何其他单例来共享全局状态。

于 2012-10-09T09:52:07.850 回答