库记录器是否应该只有空处理程序?

时间:2019-02-17 05:28:46

标签: python python-logging

我正在开发一个新的库,并且对日志记录的概念是全新的。

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

如果我的库中仍然有独占文件和流处理程序,那将会是一个问题。

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

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

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

1 个答案:

答案 0 :(得分:0)

第一个问题-[来自python文档]-

  

“应用程序开发人员知道他们的目标受众以及什么   处理程序最适合其应用程序:如果添加   处理人员“在幕后”,您很可能会干扰他们的能力   进行单元测试并提供适合他们的日志   要求。” 1

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

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

全面了解日志记录机制(记录器,处理程序,过滤器和传播)- 你可以看这里- logging flow