为什么这个python代码过滤出的日志比INFO低?
import logging # logging.basicConfig(level=logging.DEBUG)
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s"))
logging.getLogger().addHandler(consoleHandler)
logging.debug('debug')
logging.info('test')
logging.warn('warn')
logging.error('error')
logging.fatal('fatal')
我只得到最后三个日志,它们等于或高于WARN。任何人都可以告诉我为什么?为什么这个python代码过滤出的日志比INFO低?
回答:
您设置处理程序的级别,而不是记录器的级别。根记录器的级别仍然设置为根的WARNING默认值,所以它不会将比WARNING更严格的任何消息传递给处理程序。
回答:
正如@ user2357112已经提到,设置级别根记录
logging.getLogger().setLevel(logging.DEBUG)
你的代码将是这样的:
import logging # logging.basicConfig(level=logging.DEBUG)
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s"))
logging.getLogger().addHandler(consoleHandler)
logging.getLogger().setLevel(logging.DEBUG)
logging.debug('debug')
logging.info('test')
logging.warn('warn')
logging.error('error')
logging.fatal('fatal')#Output
#output
# 2017-12-18 12:15:49,647; DEBUG; debug
# 2017-12-18 12:15:49,648; INFO; test
# 2017-12-18 12:15:49,648; WARNING; warn
# 2017-12-18 12:15:49,648; ERROR; error
# 2017-12-18 12:15:49,648; CRITICAL; fatal
以上是 为什么这个python代码过滤出的日志比INFO低? 的全部内容, 来源链接: utcz.com/qa/261186.html