我想统一我的应用程序的整个日志记录工具。任何警告都会引发异常,接下来我捕获它并将其传递给记录器。但问题是:记录中是否有静音设施?有时记录器变得过于冗长。有时由于警告过于嘈杂,警告是否有详细限制?
最佳答案
不仅有log levels ,但是有一个非常灵活的way of configuring them 。如果您使用命名的 logger
对象(例如 logger =logging.getLogger(...)
),那么您可以适本地配置它们。这将允许您在逐个子系统的基础上配置详细程度,其中子系统由日志记录层次结构定义。
另一个选项是使用 logging.Filter
和 Warning filters以限制输出。我以前没有使用过这种方法,但看起来它可能更适合您的需求。
给PEP-282阅读有关 Python logging
包的精彩散文描述。我认为它比模块文档更好地描述了功能。
澄清后编辑
您也许能够使用基于 logging.Logger
并使用 logging.setLoggerClass()
注册的自定义类来处理此日志记录部分。听起来您确实想要类似于 syslog 的“最后一条消息重复了 9 次”的内容。不幸的是我不知道在任何地方都有这样的实现。您可能想看看 twisted.python.log 是否支持此功能。
关于Python:警告和日志记录详细限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417665/