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

允许从Python模块自定义日志记录的准则是什么?,python,logging,Python,Logging,我目前正在编写几个Python模块,这些模块执行一些I/O操作 这些模块可以由其他开发人员直接使用,也可以通过我编写的简单脚本调用,主要用于测试目的 我使用了日志模块并设置了一个StreamHandler来显示标准错误输出上的日志,它运行良好。但是,我不知道如何使这些日志可自定义。显然,当开发人员使用我的类时,我不想强制将这些日志写入标准输出。我想给他一个选择,理想的情况是让他添加自己的处理程序,或者如果他不需要日志,就不添加任何处理程序 对于这种情况,有关于Python日志记录的指导方针吗?每

我目前正在编写几个Python模块,这些模块执行一些I/O操作

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

我使用了日志模块并设置了一个StreamHandler来显示标准错误输出上的日志,它运行良好。但是,我不知道如何使这些日志可自定义。显然,当开发人员使用我的类时,我不想强制将这些日志写入标准输出。我想给他一个选择,理想的情况是让他添加自己的处理程序,或者如果他不需要日志,就不添加任何处理程序

对于这种情况,有关于Python日志记录的指导方针吗?每个类都应该有自己的记录器吗

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


谢谢。

有一个关于python日志模块的非常好的教程


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

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

logger = logging.getLogger(__name__)
如有必要,使用此记录器的子记录器

这样,库日志事件映射到Python包层次结构,库模块的用户可以选择是否使用日志,如果使用日志,如何使用处理程序配置日志

可以在要作为脚本运行的东西中添加处理程序


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

非常感谢。多亏了你的建议,我可以修复我的日志系统,使之更加干净和可定制。非常感谢你的教程。这是一本非常有趣的书。我希望我也能接受这个答案。为了公平投票。