如何在Python3中向日志添加动态MDC

如何在Python3中向日志添加动态MDC,python,python-3.x,logging,mdc,Python,Python 3.x,Logging,Mdc,我想将MDC添加到动态更新的日志消息中。一个具体的例子是向日志消息添加一个变量值,当变量更新时,日志消息会更新。我曾尝试使用LoggerAdapter来实现这一点,但一旦设置了值,即使代码中的变量被更新,该值仍然保持静态 以下是我构建的CustomAdapter,旨在实现这一点: class CustomAdapter(logging.LoggerAdapter): def process(self, msg, kwargs): for key in sorted(se

我想将MDC添加到动态更新的日志消息中。一个具体的例子是向日志消息添加一个变量值,当变量更新时,日志消息会更新。我曾尝试使用LoggerAdapter来实现这一点,但一旦设置了值,即使代码中的变量被更新,该值仍然保持静态

以下是我构建的CustomAdapter,旨在实现这一点:

class CustomAdapter(logging.LoggerAdapter):

    def process(self, msg, kwargs):
        for key in sorted(self.extra.keys()):
            msg = '[{0}] {1}'.format(self.extra.get(key), msg)
        return msg, kwargs
class CustomAdapter(logging.LoggerAdapter):

    def process(self, msg, kwargs):
        for key in sorted(self.extra.keys()):
            msg = '[{0}] {1}'.format(self.extra.get(key)(), msg)
        return msg, kwargs
但是,如果我将一个变量传递给CustomAdapter,使其成为所有日志消息的前缀,那么它不会动态更新

例如,我希望将变量x的值预先添加到所有日志消息中,但如果x发生更改,我希望在x发生更改后将新值自动添加到所有日志消息中

如何在Python3中添加动态MDC来记录消息

编辑:回答了我自己的问题。修改CustomAdapter以使用函数调用并传入lambda,该lambda返回要更新的变量。因此,适配器应为: