我是Python的新手。我一直在修改现有的python模块以改进日志记录。我遇到了要求使用需要记录的特定键(上下文)以及进入和退出点来标记每个方法调用(和退出)的要求。该密钥应该在root方法生成并传递给进一步的方法调用。
我对我应遵循的方法感到困惑。有没有办法在现有方法接口中动态插入额外参数可能是使用AOP还是注释?
或者我将这个问题改为简短 -
如何将额外参数传递给后续方法调用?
由于 Panks
答案 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的任何其他属性,或使用任何其他单例来共享全局状态。