首页 > 解决方案 > 如何处理 Python 日志中的常规消息?

问题描述

Python 的logging工具具有多个严重级别:

*根记录器默认为警告。


在此设置中如何处理常规消息?

“常规消息”是指那些不是警告但应始终向用户显示的消息。

一个例子可能是:

循环文件列表并对它们应用累积操作。“常规消息”可能是“当前正在处理 {filename}”。INFO 级别可能保存文件处理的各个子步骤的状态,用户在大多数情况下可能没有兴趣了解这些子步骤。警告级别可能是潜在问题,例如两个文件包含相同键的不同条目。

我认为我想要一个介于 WARNING 和 INFO 之间的级别,可能称为 NOTICE、NOTE、REGULAR 或类似名称。这个级别将是我的默认值,而不是警告。为什么日志记录不提供这样的级别?

我知道我可以很容易地添加这样的级别,但日志记录手册强烈反对自定义级别。因此,我认为必须有一种规范的方式来记录上述消息......


编辑:只是为了澄清关于“基于意见”的投票结束:我想知道logging应该如何使用坚持给定的一组级别和约定。因此,我认为正确的答案不一定是一种意见,而应该是使用该模块的最佳实践。

该手册指出“定义您自己的级别是可能的,但不是必需的,因为现有级别是根据实践经验选择的”。在上面的示例中,我似乎缺少一个级别:“常规消息”或 - 如果我切换到 INFO 表示“常规消息” - 类似于用户的“详细信息”。

标签: pythonlogging

解决方案


日志消息并没有真正为用户缩进。您所描述的听起来更像是常规输出。然而,至少有两种可能的方法来解决这个问题。要么制作常规消息INFO级别并将不那么有趣的消息移至该DEBUG级别,要么使用日志过滤器。引用文档:

处理程序和记录器可以使用过滤器进行比级别提供的更复杂的过滤。


推荐阅读