0

我正在开发一个新库,我对日志记录的概念完全陌生。

我已经使用 Python 的日志记录模块添加了日志记录。我给出的日志记录有一个特定的 FileHandler 设置为调试级别,StreamHandler 设置为警告级别。关于日志的 Python 文档说库应该只有 Null 处理程序。这是文档链接https://docs.python.org/3/howto/logging.html#library-config

如果我的库中仍有独占文件和流处理程序,这会是一个问题吗?

我无法理解如果他们不能拥有自己的自定义处理程序,为什么应该在库中创建日志。

如果有人能消除我对在库中实现日志记录的理解差距,那将非常有帮助。

第二个问题:如果我设置 Null 处理程序,使用我的库的应用程序开发人员如何能够访问/启用我在库中创建的日志?

4

1 回答 1

0

对于你的第一个问题 - [来自 python 文档] -

“应用程序开发人员知道他们的目标受众以及最适合他们的应用程序的处理程序:如果你在‘幕后’添加处理程序,你很可能会干扰他们执行单元测试和交付符合他们要求的日志的能力。” 1

作为您图书馆的用户,我可能想显示来自 your_pkg.foo.baz 的日志,而不是 your_pkg.foo 模块的日志。从您的库中添加处理程序可能会迫使我这样做(取决于设置为记录器和处理程序的日志级别)。

对于您的第二个问题 - 添加 Nullhandler 允许用户通过 logging.get_logger("your_pkg.foo.baz").add_handler(...) 配置新的处理程序来选择他的自定义日志记录需求。

要完全了解日志记录机制(记录器、处理程序、过滤器和传播) - 你可以看这里 - 日志流

于 2019-02-17T06:08:13.000 回答