我正在使用,我想我误会了如何为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版本开始修复的错误。