允许从Python模块进行自定义日志记录的准则是什么?

ere*_*eOn 7 python logging

我目前正在编写几个执行一些I/O的Python模块.

Thoses模块可以由其他开发人员直接使用,也可以通过我编写的简单脚本调用,主要用于测试目的.

我使用了日志记录模块并设置了StreamHandler来显示标准错误输出上的日志,它运行良好.但是我不确定如何使这些日志可自定义.显然,当开发人员使用我的类时,我不想强​​制将这些日志写在标准输出上.我想做出选择,理想情况是如果他不想要日志,就让他自己添加自己的处理程序或者根本不添加.

在这种情况下是否有关于Python日志记录的指导原则?每个班级都应该有自己的记录器吗?

简而言之,你是如何做到的,为什么?

谢谢.

Vin*_*jip 2

确保打算用作库的模块不会添加任何处理程序(除了库的顶级记录器的 NullHandler 实例之外)。

最佳实践是在模块级别使用记录器,使用

logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

并且,如有必要,使用此记录器的子记录器。

这样,您的库日志事件就会映射到 Python 包层次结构,并且库模块的用户可以选择是否使用日志记录,以及如果使用它,如何使用处理程序配置它。

可以在要作为脚本运行的事物中添加处理程序。

只要您的用户可以控制是否调用这些 API,就可以使用方便的 API 来向记录器添加处理程序。