我只是从PyCharm开始,有没有一种方法可以展示debug&信息警告?

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

但是,调试信息不会显示.

推荐答案

问题与PyCharm无关,而是与日志(log)配置的工作方式有关.如果try 编写在普通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

问题是setting the 100's level isn't enough!您还必须向记录器添加一个处理程序,否则记录器将简单地将消息转发到链上.消息将在root logger结束,默认情况下,root logger的级别为logging.WARN,因此丢弃DEBUG级消息.

但是,如果将处理程序添加到logger,则所有处理程序都可以正常工作:

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

可以 for each 记录器设置多个处理程序,每个处理程序可以具有不同的日志(log)记录级别.

有关记录器和处理程序级别的更多信息,请参见this问题.我还建议仔细阅读logging模块的文档和各种指南(例如logging How-To,因为它有非常先进的配置).

同样来自python3.2有一个dictConfig函数,允许您将日志(log)层次 struct 的配置指定为字典,而无需手动创建每个处理程序和记录器.

Python-3.x相关问答推荐

基于另一个数据帧计算总和

如何在 python 中将带有时区信息的时间戳转换为 utc 时间

以特定方式重新排列 pandas 数据框的列

我无法直接在 VSCode 中运行该程序,但可以使用 VScode 中的终端运行它

tkinter/python3.9 中的 Entry 子类和用户输入重复的问题

通过在不重新索引的情况下采用最高概率的百分比,有效地转换 0/1 列表中的概率列表

如果集合大于 len(x),则 pandas 在重复的行中拆分集合列

嵌套协议的使用(协议成员也是协议)

Pandas 窗口聚合两个排序表

attrs 将 list[str] 转换为 list[float]

使用gekko python的混合整数非线性规划

列出相同索引的Pandas

使用大型多个数据集,其中每个数据集包含多个值 - Pytorch

删除重复项,但将值相加为一

为 python3 安装 opencv

所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?

如何使用 asyncio 添加连接超时?

在python中打印下标

具有不均匀间隙的 Python 范围

python asyncio add_done_callback 与 async def