1 回答

TA貢獻1836條經驗 獲得超3個贊
這最終解決了我的問題:
class Message(object):
def __init__(self, fmt, args):
self.fmt = fmt
self.args = args
def __str__(self):
return self.fmt + ''.join(str(arg) for arg in self.args)
class CommonLoggerAdapter(logging.LoggerAdapter):
def __init__(self, logger, extra=None):
super(CommonLoggerAdapter, self).__init__(logger, extra or {})
def log(self, level, msg, *args, **kwargs):
if self.isEnabledFor(level):
msg, kwargs = self.process(msg, kwargs)
self.logger._log(level, Message(msg, args), (), **kwargs)
顯然,使用適配器實現而不是記錄器實現效果更好,因為 logging.config 在它們之間共享。如果要使用 Logger 實現,則需要在初始化時執行此操作:
def __init__(name):
for handler in logging._handlers.values():
self.addhandler(handler)
這兩個選項都有效!希望它也對其他人有所幫助!
添加回答
舉報