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

时间:2012-06-13 12:44:30

标签: python logging

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

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:2)

确保要用作库的模块不会将任何处理程序(NullHandler实例除外)添加到库的顶级记录器中。

最佳做法是使用

在模块级别使用记录器
logger = logging.getLogger(__name__)

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

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

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

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

答案 1 :(得分:1)

有关python

的日志记录模块的非常好的教程

http://docs.python.org/howto/logging.html