在我的Python脚本中,在模块之间共享记录器实例的惯用方法是什么?

时间:2011-03-14 15:16:40

标签: python singleton

我创建了自己的简单记录器类,它使用COM interop重定向到公司标准记录器。我想在我的脚本开头附近创建logger实例,然后使用此记录器允许我的脚本中的所有模块集中记录。

是否有一种惯用的方法在所有模块之间共享此记录器实例,而无需将logger参数专门添加到需要记录的每个类的构造函数中?

我应该使用全局变量还是单例,还是有其他推荐的方法来模拟模块之间的记录器?

2 个答案:

答案 0 :(得分:5)

为什么不使用Python标准日志记录并编写处理程序来与公司标准日志记录系统进行交互? Python日志记录是专门设计的,因此您无需在代码层之间传递记录器实例 - Python记录器本质上已经是单例。

stdlib日志记录的处理程序也非常容易编写 - 有许多第三方处理程序的例子。

披露:我是Python标准库日志包的维护者。

答案 1 :(得分:1)

我会使用模块而不是类,因为python模块已经是单例。

有几种方法here