我想避免编写像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 的实现并稍微调整的情况下记录这些额外数据?
添加回答
举报
0/150
提交
取消