python colored-logs(与其他库)配置问题

时间:2016-11-22 13:09:48

标签: python logging

我正在使用我认为我误解了如何为python-coloredlogs设置记录器实例。它很好用,直到我的代码使用其他库,它们的日志消息由根记录器输出,基本上我不想看到它们:

2016-11-22 13:03:31 <hostname> <app>[66800] INFO some message
2016-11-22 13:03:31 <hostname> requests.packages.urllib3.connectionpool[66800] INFO Starting new HTTP connection (1): <...>

Afaics解决方案应该是为有色日志创建一个特定的记录器,使用它,配置它并将其传递给coloredlogs install方法(code/docstring)。我这样做,但然后有色日志似乎只锁定警告日志级别。

我可能误解了如何正确设置有色日志的记录器实例。

使用python logging howto示例,并添加有色日志:

import logging

# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

# test output
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

import coloredlogs
coloredlogs.install(level='DEBUG', logger=logger)
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

输出:

2016-11-16 16:06:53,942 - simple_example - DEBUG - debug message
2016-11-16 16:06:53,942 - simple_example - INFO - info message
2016-11-16 16:06:53,942 - simple_example - WARNING - warn message
2016-11-16 16:06:53,942 - simple_example - ERROR - error message
2016-11-16 16:06:53,942 - simple_example - CRITICAL - critical message
2016-11-16 16:06:53 <hostname> simple_example[63650] WARNING warn message
2016-11-16 16:06:53 <hostname> simple_example[63650] ERROR error message
2016-11-16 16:06:53 <hostname> simple_example[63650] CRITICAL critical message

streamhandler正确输出调试级别日志,但在安装有色日志之后,日志级别设置为警告并且不发出信息/调试日志,即使a)记录器级别设置为debug并且b)I&#39; m将level='DEBUG'传递给coloredlogs.install方法。

如何将配置的记录器传递给coloredlogs(以便其他库通过root logger记录)并将coloredlogs级别设置为info / debug?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我直接在Github上发现了you posted this question问题跟踪器coloredlogs

图书馆的作者回答你,所以我在这里报道。

似乎这是一个自6.0版本以来修复的错误。