我正在使用我认为我误解了如何为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?
感谢您的帮助。
答案 0 :(得分:2)