Python3 和 PyCharm - 在运行/调试中调试日志级别

标签 python debugging logging python-3.x pycharm

我刚开始使用 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/

相关文章:

python - IF 语句格式化 Python

java - Intellij Debug Docker 容器不断给我 IO 异常握手失败

php - 通过 cron 运行 php 脚本,如何记录任何输出?

ruby-on-rails - 使用 Ruby 标准 Logger 每天只创建一个日志

python - 删除由 selenium/chromedriver 传递给 chrome 的参数

python - 在 python 中移动列

Python pyodbc 连接到 IBM Netezza Erroring

javascript - 多个图像 slider 加载图像错误

debugging - 压缩 Windows pdb 符号文件会阻止调试器加载它们

java - 配置 Java 安装以仅打印堆栈跟踪的前几行