7

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

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

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

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

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

谢谢。

4

2 回答 2

2

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

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

logger = logging.getLogger(__name__)

并在必要时使用此记录器的子记录器。

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

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

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

于 2012-06-13T13:01:19.727 回答
1

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

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

于 2012-06-13T13:01:12.637 回答