python - 如何处理 Python 日志中的常规消息?
问题描述
Python 的logging
工具具有多个严重级别:
- 批判的
- 错误
- 警告*
- 信息
- 调试
- 没有设置
*根记录器默认为警告。
在此设置中如何处理常规消息?
“常规消息”是指那些不是警告但应始终向用户显示的消息。
一个例子可能是:
循环文件列表并对它们应用累积操作。“常规消息”可能是“当前正在处理 {filename}”。INFO 级别可能保存文件处理的各个子步骤的状态,用户在大多数情况下可能没有兴趣了解这些子步骤。警告级别可能是潜在问题,例如两个文件包含相同键的不同条目。
我认为我想要一个介于 WARNING 和 INFO 之间的级别,可能称为 NOTICE、NOTE、REGULAR 或类似名称。这个级别将是我的默认值,而不是警告。为什么日志记录不提供这样的级别?
我知道我可以很容易地添加这样的级别,但日志记录手册强烈反对自定义级别。因此,我认为必须有一种规范的方式来记录上述消息......
编辑:只是为了澄清关于“基于意见”的投票结束:我想知道logging
应该如何使用坚持给定的一组级别和约定。因此,我认为正确的答案不一定是一种意见,而应该是使用该模块的最佳实践。
该手册指出“定义您自己的级别是可能的,但不是必需的,因为现有级别是根据实践经验选择的”。在上面的示例中,我似乎缺少一个级别:“常规消息”或 - 如果我切换到 INFO 表示“常规消息” - 类似于用户的“详细信息”。
解决方案
日志消息并没有真正为用户缩进。您所描述的听起来更像是常规输出。然而,至少有两种可能的方法来解决这个问题。要么制作常规消息INFO
级别并将不那么有趣的消息移至该DEBUG
级别,要么使用日志过滤器。引用文档:
处理程序和记录器可以使用过滤器进行比级别提供的更复杂的过滤。
推荐阅读
- regex - 如何在 VBA 中使用 Regex 将字符串拆分为多行,然后从包含单词“faxed”的行中选择日期
- javascript - 从右到左向下滚动时更改背景颜色
- visual-studio - 在 Visual Studio 2019 中组织 C# 使用?
- c# - 如何检测光线投射的相机?
- sql - 如何对文本数据类型进行排序
- c# - 在WPF C#中按下按钮时如何向窗口添加新标签
- maven - Maven jacoco 排除了可能由于 uber jar 而无法工作
- c# - 您可以使用 ML.NET 回归算法和共享单车示例中的部分数据吗?
- android - 全屏模式下的 Android NavigationUI 片段
- java - 无法弄清楚如何在 Windows 上的 Java 中使用 SCIP(使用 eclipse)