稍后在python日志模块中检查logger.disabled。什么';理由是什么?

稍后在python日志模块中检查logger.disabled。什么';理由是什么?,python,logging,Python,Logging,我将介绍Python2(Ubuntu 16.04上默认为2.7.12)和pyton3.5(Ubuntu 16.04上默认为3.5.2)中python日志模块的代码 问题是-如果我们看一下最终调用self.handle的def\u log的实现,那么关于self.disabled的检查实际上是在handle方法中完成的,但在\u log方法中没有完成 同意,在self.handle中再次检查它可能是有意义的,但是为什么不先在self中检查它呢?\u log或者更好地在self中检查它。IsEnab

我将介绍Python2(Ubuntu 16.04上默认为2.7.12)和pyton3.5(Ubuntu 16.04上默认为3.5.2)中python日志模块的代码

问题是-如果我们看一下最终调用
self.handle
def\u log
的实现,那么关于
self.disabled
的检查实际上是在
handle
方法中完成的,但在
\u log
方法中没有完成

同意,在
self.handle中再次检查它可能是有意义的,但是为什么不先在
self中检查它呢?\u log
或者更好地在
self中检查它。IsEnabled for
可以避免在
self.\u log
方法中做很多工作

我错过了什么

更新:禁用记录器时进行了一些分析-代码为

以下GIST具有实际的cprofile数据,表明在发生时和发生时的性能影响

当记录器被禁用时,似乎会对性能产生相当大的影响


这是否值得考虑

这确实是一个问题,现在已经解决了-


您衡量过性能影响吗?那等于什么?不,我没有。将这样做并进行更新,可能不会太多,但我们能否不将检查向上移动?使用性能度量进行更新,在禁用记录器的情况下确实会受到相当大的惩罚。当记录器启用时,将复选框移至isEnabledFor可忽略不计。请看一看,如果我遗漏了什么,请告诉我。我会进一步调查。谢谢。我提出了一个Python问题来跟踪这一点: