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

回到顶部