使用上下文进行Python日志记录 - 传递密钥

时间:2012-10-09 09:45:40

标签: python logging aop

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

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

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

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

由于 Panks

1 个答案:

答案 0 :(得分:0)

如果所有这些方法都有一个记录器实例,也许你可以让root方法在入口处的记录器上设置上下文并在退出时将其删除。

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