2014-03-24 33 views
9

我刚开始用PyCharm调试日志记录级别,是否有一种方式来显示调试&信息警告?Python3和PyCharm - 在运行/调试

import logging 
logger = logging.getLogger('tipper') 
logger.setLevel(logging.DEBUG) 
logger.debug('debug message') 
logger.info('info message') 
logger.warn('warn message') 
logger.error('error message') 
logger.critical('critical message') 

警告,错误,严重所有显示:

/home/username/someproject/.someprojectenv/bin/python3/home/username/someproject/go.py 
warn message 
error message 
critical message 

Process finished with exit code 0 

但是调试,信息不显示。

回答

12

问题无关与PyCharm,但随着日志记录配置是如何工作的。如果你尝试写你在一个普通的Python交互式会话中的代码,你得到的结果相同:

>>> import logging 
>>> logger = logging.getLogger('tipper') 
>>> logger.setLevel(logging.DEBUG) 
>>> logger.debug('debug message') 
>>> logger.info('info message') 
>>> logger.warn('warn message') 
warn message 
>>> logger.error('error message') 
error message 
>>> logger.critical('critical message') 
critical message 

的问题是,设置logger的水平还不够!您还必须为记录器添加一个处理程序,否则记录器将简单地将消息转发到链上。这些消息将在root记录器上结束,默认情况下,该记录器的级别为logging.WARN,因此丢弃DEBUG级别的消息。

但是如果添加了一个处理程序logger一切工作正常:

>>> logger.addHandler(logging.StreamHandler()) 
>>> logger.debug('test') 
test 

您可以为每个记录一个以上的处理器,并且每个处理器可以有不同的日志记录级别。

this问题了一点关于记录仪和处理器的水平进一步的信息。我也建议仔细阅读了logging模块和各种指南(如logging How-To的文档,因为它有一个非常先进的配置。

同样来自python3.2有一个dictConfig功能,它允许您指定配置你的日志的层次结构,字典,而不必手动手动创建的每个处理器和记录器。

+1

@diimdeep是什么意思呢?因为它目前为您的评论是不是建设性的,可以被标记和删除。如果您想以某种方式评估一个答案/问题的价值你应该upvote/downvote它如果你不明白一个答案和一些澄清,或者你发现一个不同的问题有关的答案,你应该添加ac省略*解释*当前答案的错误。否则,你只是有一个*新问题*,你应该问。那么是哪一个呢? – Bakuriu

+0

我试着添加处理程序,它不适合我,因为我做错了,现在我知道了。 – diimdeep