我正在学习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日志。
我在做什么错了?
答案 0 :(得分:2)
This diagram from the docs(请参见下文)有助于说明日志记录的工作方式。注意顶部附近的两个菱形。 “记录器流程”菱形检查“为调用级别启用了记录器”,而“处理程序流程”菱形检查“为LogRecord级别启用了处理器”。这暗示着一个事实, 记录器和处理程序都有记录级别。
要记录DEBUG级别的记录,请将 logger 的级别设置为DEBUG(以及将处理程序级别设置为DEBUG):
logger = logging.getLogger("test")
logger.setLevel(logging.DEBUG)
import logging
if __name__ == "__main__" :
logger = logging.getLogger("test")
logger.setLevel(logging.DEBUG)
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 debug message
This is an info message
This is a warning message
This is an error message
This is a critical message
答案 1 :(得分:0)
根据文档
默认级别为WARNING,这意味着仅此事件 除非记录程序包是 配置为执行其他操作。
您可以在导入日志记录包后添加类似的内容,它应该可以工作
logging.basicConfig(level=logging.DEBUG)
答案 2 :(得分:0)
谢谢大家
使用
logger.setLevel(logging.DEBUG)
弄巧成拙。
顺便说一句,我也尝试过
logging.basicConfig(level=logging.DEBUG)
但是给出以下输出:
This is a debug message
DEBUG:test:This is a debug message
This is an info message
INFO:test:This is an info message
This is a warning message
WARNING:test:This is a warning message
This is an error message
ERROR:test:This is an error message
This is a critical message
CRITICAL:test:This is a critical message