为什么这个python代码过滤出的日志比INFO低?

为什么这个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