我尝试使用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
。
答案 0 :(得分:24)
问题是记录器的级别仍设置为默认值。因此,记录器甚至在它到达处理程序之前丢弃该消息。
表示处理程序在接收到消息时已接受该消息并不重要,这一点无关紧要。所以,只需添加:
logger.setLevel(logging.INFO)
当the docs解释时,记录器的默认级别为NOTSET
,这意味着它会检查其父节点,即根节点,其默认值为WARNING
。
您可以将处理程序保留为默认值NOTSET
,这意味着它会延迟记录器的过滤。
答案 1 :(得分:4)
我认为您可能需要设置正确的阈值。
logger.setLevel(logging.INFO)