logging 为嘛输出两次?

2016-09-19 18:05:39 +08:00
 dsg001

import logging as log logger = log.getLogger('logger') logger.addHandler(log.StreamHandler()) logger.setLevel(log.INFO) log.info('') logger.info('test logger')

test logger INFO:logger:test logger

平时使用 logger 完全没问题,现在碰到一个直接 root 输出的第三方库才发现有这问题

3356 次点击
所在节点    Python
2 条回复
sylecn
2016-09-19 19:34:04 +08:00
代码格式乱掉了,基本没法看。重新排版一下吧。

一般输出两次是配置问题,在子 logger 配置中,如果不希望上游的 logger 继续收到并处理该日志,需要设置 propagate=0.

根 logger 是空字符串"", 子 logger 就是 "a.b.c"这种。一般第三方库都会用子 logger 。但是你没有点名,所以不能确定。如果真的是用的 root logger ,那除非是配置了两个 console 类型的 handler ,才会输出两次。
dsg001
2016-09-19 19:56:58 +08:00
@sylecn 感谢,设置 propagate 搞定

第三方直接使用的 root logger ,貌似 root 使用后会自动添加一个 StreamHandler , root 和子 logger 各有一个 StreamHandler ,所以输出两次记录

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307321

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX