python3.x - python3 logging 如何让rootLogger不输出
本文介绍了python3.x - python3 logging 如何让rootLogger不输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
用python的logging模块,我想让info日志输出到info.log中,warn日志输出到warn.log中;
本来我不想配置这个root logger,但是不配置就会报错,而且所有的输出都会在这个root logger里面再输出一遍;
我理解root是找不到其他logger的时候才在root输出,为什么所有的日志都会在root里面再输出一遍?
[loggers]
keys = root, info, warn
[logger_root]
handlers = root
qualname = root
level = DEBUG
[logger_info]
handlers = info
qualname = info
level = INFO
[logger_warn]
handlers = warn
qualname = warn
level = WARNING
[handlers]
keys = root, info, warn
[handler_root]
class = StreamHandler
formatter = warn
args = (sys.stdout,)
[handler_info]
class = FileHandler
formatter = info
args = ("log/info.log", "a")
[handler_warn]
class = FileHandler
formatter = warn
args = ("log/warn.log", "a")
[formatters]
keys = info, warn
[formatter_info]
format = %(asctime)s %(message)s
datefmt = %Y-%m-%d %H:%M:%S
[formatter_warn]
format = %(levelname)s %(asctime)s [%(filename)s:%(lineno)d] %(message)s
解决方案
python的logger有一个propagate属性,如果这个属性是True,那么这个logger的输出会朝着上一级logger传播
所以需要把其他logger的propagate属性设置为False
这篇关于python3.x - python3 logging 如何让rootLogger不输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文