我正在编写以下代码将消息记录到文件中:
#!/usr/bin/python3
import logging
## init logger
logger = logging.getLogger(__name__)
## create handler file
handler = logging.FileHandler('mylog3.log')
## set log level
handler.setLevel(logging.INFO)
## add handler to logger
logger.addHandler(handler)
l = [1, 2, 3, 4]
i = 3
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.debug('This is a debug message. I=%d l=%s', i, l)
logger.error('This is an error message. l =%s', l)
logger.fatal('This is a fatal error message')
我看到的问题是,无论我给出什么设置,它总是在文件中打印警告,错误和致命错误消息。永远不会写入调试和信息消息。
我确认我在Windows上和我的Ubuntu linux Python 3上都看到了PyCharm的问题。所以,我必须做错了。它能是什么?我不知所措!
答案 0 :(得分:1)
由于行handler.setLevel(logging.INFO)
,未显示调试和信息消息。这会导致不显示级别logging.INFO
或更少(仅信息和调试)的所有消息。您可以将loggign.INFO
替换为logging.NOTSET
来解决此问题。
答案 1 :(得分:1)
记录器和处理程序都有级别。您已设置处理程序的级别,但不为记录器设置级别 - 默认为WARNING
。如果您这样做logger.setLevel(logging.DEBUG)
,您应该看到DEBUG
和INFO
消息(如果您根本没有在处理程序上设置级别)或INFO
消息但不是{{1}消息(如果您将处理程序的级别设置为DEBUG
)。
有关日志记录中信息流的详细信息,请参阅this diagram。