Python日志问题?

时间:2017-11-20 22:00:47

标签: python logging

我正在编写以下代码将消息记录到文件中:

#!/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的问题。所以,我必须做错了。它能是什么?我不知所措!

2 个答案:

答案 0 :(得分:1)

由于行handler.setLevel(logging.INFO),未显示调试和信息消息。这会导致不显示级别logging.INFO或更少(仅信息和调试)的所有消息。您可以将loggign.INFO替换为logging.NOTSET来解决此问题。

答案 1 :(得分:1)

记录器和处理程序都有级别。您已设置处理程序的级别,但不为记录器设置级别 - 默认为WARNING。如果您这样做logger.setLevel(logging.DEBUG),您应该看到DEBUGINFO消息(如果您根本没有在处理程序上设置级别)或INFO消息但不是{{1}消息(如果您将处理程序的级别设置为DEBUG)。

有关日志记录中信息流的详细信息,请参阅this diagram