库记录器是否应该只有空处理程序?
Should library loggers have only null handlers?
我正在开发一个新库,我对日志记录的概念完全陌生。
我已经使用 Python 的日志模块添加了日志记录。我提供的日志记录有一个特定的 FileHandler 设置为调试级别,StreamHandler 设置为警告级别。 Python 关于日志记录的文档说库应该只有 Null 处理程序。
这是文档 link https://docs.python.org/3/howto/logging.html#library-config
如果我的库中仍然有独占文件和流处理程序,会不会有问题。
我不明白为什么要在库中创建日志,如果它们没有自己的自定义处理程序。
如果有人能消除我对在库中实现日志记录的理解差距,那将非常有帮助。
第二个问题:如果我设置了 Null 处理程序,使用我的库的应用程序开发人员将如何access/enable我在库中创建的日志?
关于你的第一个问题 - [来自 python 文档] -
"The application developer knows their target audience and what
handlers are most appropriate for their application: if you add
handlers ‘under the hood’, you might well interfere with their ability
to carry out unit tests and deliver logs which suit their
requirements." 1
作为您图书馆的用户,我可能想显示来自 your_pkg.foo.baz 的日志,
但不是 your_pkg.foo 模块。
从您的库中添加处理程序可能会迫使我这样做(取决于为记录器和处理程序设置的日志级别)。
关于你的第二个问题 -
添加 Nullhandler 允许用户通过 logging.get_logger("your_pkg.foo.baz").add_handler(...).
配置新的处理程序来选择他的自定义日志记录需求
充分理解日志记录机制(记录器、处理程序、过滤器和传播)-
你可以看看这里 -
logging flow
我正在开发一个新库,我对日志记录的概念完全陌生。
我已经使用 Python 的日志模块添加了日志记录。我提供的日志记录有一个特定的 FileHandler 设置为调试级别,StreamHandler 设置为警告级别。 Python 关于日志记录的文档说库应该只有 Null 处理程序。 这是文档 link https://docs.python.org/3/howto/logging.html#library-config
如果我的库中仍然有独占文件和流处理程序,会不会有问题。
我不明白为什么要在库中创建日志,如果它们没有自己的自定义处理程序。
如果有人能消除我对在库中实现日志记录的理解差距,那将非常有帮助。
第二个问题:如果我设置了 Null 处理程序,使用我的库的应用程序开发人员将如何access/enable我在库中创建的日志?
关于你的第一个问题 - [来自 python 文档] -
"The application developer knows their target audience and what handlers are most appropriate for their application: if you add handlers ‘under the hood’, you might well interfere with their ability to carry out unit tests and deliver logs which suit their requirements." 1
作为您图书馆的用户,我可能想显示来自 your_pkg.foo.baz 的日志, 但不是 your_pkg.foo 模块。 从您的库中添加处理程序可能会迫使我这样做(取决于为记录器和处理程序设置的日志级别)。
关于你的第二个问题 - 添加 Nullhandler 允许用户通过 logging.get_logger("your_pkg.foo.baz").add_handler(...).
配置新的处理程序来选择他的自定义日志记录需求充分理解日志记录机制(记录器、处理程序、过滤器和传播)- 你可以看看这里 - logging flow