python3.x - python3 logging 如何让rootLogger不输出

查看:560
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆