Python Logger无法正常工作

时间:2014-01-14 03:47:42

标签: python logging

我尝试使用Python中的日志记录来编写一些日志,但奇怪的是,只会记录error,无论我设置哪个级别,info都会被忽略。

代码:

import logging
import logging.handlers

if __name__ == "__main__":
    logger = logging.getLogger()
    fh = logging.handlers.RotatingFileHandler('./logtest.log', maxBytes=10240, backupCount=5)
    fh.setLevel(logging.DEBUG)#no matter what level I set here
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.addHandler(fh)
    logger.info('INFO')
    logger.error('ERROR')

结果是:

2014-01-14 11:47:38,990 - root - ERROR - ERROR

根据http://docs.python.org/2/library/logging.html#logging-levels

也应该记录INFO

2 个答案:

答案 0 :(得分:24)

问题是记录器的级别仍设置为默认值。因此,记录器甚至在它到达处理程序之前丢弃该消息。

表示处理程序在接收到消息时已接受该消息并不重要,这一点无关紧要。

所以,只需添加:

logger.setLevel(logging.INFO)

the docs解释时,记录器的默认级别为NOTSET,这意味着它会检查其父节点,即根节点,其默认值为WARNING

您可以将处理程序保留为默认值NOTSET,这意味着它会延迟记录器的过滤。

答案 1 :(得分:4)

我认为您可能需要设置正确的阈值。

logger.setLevel(logging.INFO)