我创建了自己的简单记录器类,它使用COM interop重定向到公司标准记录器。我想在我的脚本开头附近创建logger实例,然后使用此记录器允许我的脚本中的所有模块集中记录。
是否有一种惯用的方法在所有模块之间共享此记录器实例,而无需将logger参数专门添加到需要记录的每个类的构造函数中?
我应该使用全局变量还是单例,还是有其他推荐的方法来模拟模块之间的记录器?
答案 0 :(得分:5)
为什么不使用Python标准日志记录并编写处理程序来与公司标准日志记录系统进行交互? Python日志记录是专门设计的,因此您无需在代码层之间传递记录器实例 - Python记录器本质上已经是单例。
stdlib日志记录的处理程序也非常容易编写 - 有许多第三方处理程序的例子。
披露:我是Python标准库日志包的维护者。
答案 1 :(得分:1)
我会使用模块而不是类,因为python模块已经是单例。
有几种方法here。