我刚开始使用 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')
warn、error、critical全部显示:
/home/username/someproject/.someprojectenv/bin/python3/home/username/someproject/go.py
warn message
error message
critical message
Process finished with exit code 0
但是调试,信息不显示。
最佳答案
问题与 PyCharm 无关,但与日志配置的工作方式有关。如果您尝试编写您在普通 python 交互式 session 中显示的代码,您会得到相同的输出:
>>> 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
问题是设置记录器
的级别是不够的!您还必须向记录器添加一个处理程序,否则记录器将简单地将消息转发到链中。消息将在 root
记录器中结束,默认情况下,它具有 logging.WARN
级别,因此会丢弃 DEBUG
级别的消息。
但是,如果您向 logger
添加处理程序,一切正常:
>>> logger.addHandler(logging.StreamHandler())
>>> logger.debug('test')
test
您可以为每个记录器设置多个处理程序,每个处理程序可以有不同的日志记录级别。
参见 this询问有关记录器和处理程序级别的更多信息。我还建议仔细阅读 logging
的文档模块和各种指南(例如 logging
How-To ,因为它具有非常高级的配置。
还有一个来自 python3.2 的 dictConfig
该函数允许您将日志记录层次结构的配置指定为字典,而无需手动创建每个处理程序和记录器。
关于Python3 和 PyCharm - 在运行/调试中调试日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22612913/