我正在使用,我想我误会了如何为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的解决方案应该是创建一个供coloredlog使用的特定记录器,对其进行配置,然后将其传递给coloredlogs install方法(code/docstring)。我这样做,但是然后coloredlogs似乎仅锁定到警告日志级别。

我可能误会了如何正确为coloredlogs设置记录器实例。

使用python logging howto示例,并添加coloredlogs:

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


流处理程序正确地输出调试级别日志,但是,即使a)记录程序级别设置为调试,并且b)我传入了转换为level='DEBUG'方法。

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

谢谢你的帮助。

最佳答案

我直接在coloredlogs的Github问题跟踪器上看到了you posted this question

图书馆的作者回答了您,因此我在这里报告。

看来这是从6.0版本开始修复的错误。

10-05 22:30