Python 日志模块 logging 使用 root Logger 时要小心

在文章《Python 日志模块 logging 的使用》里介绍了利用 logging 模块日志按层级传递,并所有日志都会传递到 root Logger 的机制,实现在主程序接收和处理模块日志的方法。但是要注意这个方法只适用于明确知道自己程序导入的第三方包没有用 logging 模块的情景,否则会将第三方包产生的日志也接收。

我就因为这样操作导致程序接收了 tensorflow 的日志,但是由于我程序的日志添加了一个自定义的属性并用 Filter 根据这个属性过滤,而 tensorflow 日志没有这个属性,导致程序运行报错。所以这种方案,如果没确定好第三方包的情况,轻则接收到不想要的日志,重则程序出问题。

因此,建议不要使用 root Logger。而是自己给程序所有 Logger 根据希望的日志传递需要起名字,比如主程序的 Logger 起名为 "WGSpipeline" 那么质控模块的 Logger 可以起名为 "WGSpipeline.QC",这样日志能从质控模块传递给主程序。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容