【发布时间】:2018-06-12 17:54:01
【问题描述】:
我有一个格式化程序,它需要记录中的特殊属性“user_id”,但并不总是存在(有时我使用特殊的 logging.Filter 将它添加到记录中)。 我试图像这样覆盖 logging.Logger 的 makeRecord 方法:
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)-15s user_id=%(user_id)s %(filename)s:%(lineno)-15s: %(message)s')
class OneTestLogger(logging.Logger):
def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None):
rv = logging.Logger.makeRecord(self, name, level, fn, lno,
msg, args, exc_info,
func, extra)
rv.__dict__.setdefault('user_id', 'master')
return rv
if __name__ == '__main__':
logger = OneTestLogger('main')
print logger
logger.info('Starting test')
但这似乎不起作用,我不断得到:
main.MyLogger 实例位于 0x7f31a6a5b638>
找不到记录器“main”的处理程序
我做错了什么? 谢谢。
【问题讨论】:
标签: python python-2.7 logging