我目前正在编写几个执行一些I/O的Python模块.
Thoses模块可以由其他开发人员直接使用,也可以通过我编写的简单脚本调用,主要用于测试目的.
我使用了日志记录模块并设置了StreamHandler来显示标准错误输出上的日志,它运行良好.但是我不确定如何使这些日志可自定义.显然,当开发人员使用我的类时,我不想强制将这些日志写在标准输出上.我想做出选择,理想情况是如果他不想要日志,就让他自己添加自己的处理程序或者根本不添加.
在这种情况下是否有关于Python日志记录的指导原则?每个班级都应该有自己的记录器吗?
简而言之,你是如何做到的,为什么?
谢谢.
确保打算用作库的模块不会添加任何处理程序(除了库的顶级记录器的 NullHandler 实例之外)。
最佳实践是在模块级别使用记录器,使用
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
并且,如有必要,使用此记录器的子记录器。
这样,您的库日志事件就会映射到 Python 包层次结构,并且库模块的用户可以选择是否使用日志记录,以及如果使用它,如何使用处理程序配置它。
可以在要作为脚本运行的事物中添加处理程序。
只要您的用户可以控制是否调用这些 API,就可以使用方便的 API 来向记录器添加处理程序。