我不知道为什么无法记录该消息,我认为一切都已正确设置。
logging.DEBUG 在记录模块下定义
import logging
import sys
logger = logging.getLogger('collega_GUI')
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(levelname)s --file: %(module)s --riga: %(lineno)d, %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug('def __init__')
但是,如果我尝试运行这个,它可以运行:
logger.warning('def __init__')
此级别变量的问题在哪里?
答案 0 :(得分:3)
问题是调试程序消息在进入处理程序之前被记录器过滤掉了。通过将handler.setLevel(logging.DEBUG)
更改为logger.setLevel(logging.DEBUG)
来解决此问题。
您可以在几个不同的位置按日志级别进行过滤,因为日志消息是在链中传递的。默认情况下,记录器只传递INFO及以上,处理程序接受所有内容。如果您希望不同级别的日志记录转到不同位置,则允许处理程序使用不同的日志级别非常有用。例如,您可以将记录器设置为DEBUG,然后创建一个在WARN及更高版本上登录到屏幕的处理程序,以及另一个在DEBUG及更高版本上记录到文件的处理程序。用户获取一些信息,日志文件很健谈。