为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在不更改记录的模块名称/函数名称/行号的情况下扩展 Logger 类吗?

我可以在不更改记录的模块名称/函数名称/行号的情况下扩展 Logger 类吗?

慕森王 2021-09-24 15:18:55
我想避免编写像logger.debug(msg, extra=self.extra). 到目前为止,我已经尝试通过两种方式(扩展 Logger 和装饰器)来做到这一点,但都没有成功。如果我扩展 Logger 类并实现像 debug 这样的方法,如下所示:def debug(self, msg, *args, **kwargs):    self._update_kwargs(**kwargs)    super(ExtendedLogger, self).debug(msg, *args, **kwargs)记录的模块/函数名/行号不是 ExtendedLogger.debug 的调用点,而是调用super(ExtendedLogger, self).debug(msg, *args, **kwargs);即它们总是相同的值。如果我尝试用装饰器实现类似的东西,我也会遇到同样的问题。我理解,这是由于呼叫findCaller在_log该文件中:https://github.com/python/cpython/blob/2.7/Lib/logging/初始化的.py(R.1284)。是否可以在不复制粘贴 Logger 的实现并稍微调整的情况下记录这些额外数据?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信