【发布时间】:2019-12-17 03:50:28
【问题描述】:
我正在学习 Python 的日志记录模块,但我不知道为什么我不能记录 DEBUG 和 INFO 消息。这是代码(python 2.7):
import logging
if __name__ == "__main__" :
logger = logging.getLogger("test")
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.DEBUG)
logger.addHandler(c_handler)
# test
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
这会导致这个输出
This is a warning message
This is an error message
This is a critical message
我希望这个输出
This is a debug message
This is an info message
This is a warning message
This is an error message
This is a critical message
看起来 c_handler.setLevel(logging.DEBUG) 不起作用,记录器使用其默认设置。默认情况下,它不会记录 DEBUG 和 INFO 日志。
我做错了什么?
【问题讨论】:
-
Handler 只处理日志。所以它 logger 的日志级别更高,它忽略了较低的级别,所以处理程序永远不会收到它们。
-
所以,基本上,您还需要执行
logger.setLevel(logging.DEBUG),以获取所有日志消息并将它们传递给处理程序。然后,根据您的处理程序及其配置,您可以获得所有信息,例如在标准输出上,只有一个文件中的错误,等等。