为共享模块定义python记录器

时间:2016-01-27 15:22:03

标签: python django logging

希望我有一个关于python / django日志记录的简单问题。

我正在编写一个Django应用程序,它会调用一些模块,这些模块会在适当的时候与其他进程,作业,脚本甚至其他应用程序共享 - 例如常见的计算。

我已经在settings.py中配置了我的Django应用程序的日志记录,然后在我的主应用程序模块(views.py等)中为我获取了记录器:

logger = logging.getLogger('exampleApp')

一切都按预期工作。

但是,当我的应用程序调用其他共享包中的模块时,我显然不希望使用相同的logging.getLogger('exampleApp')调用,因为那时使用此模块的其他进程将使用不正确的记录器配置。 / p>

此外使用

logging.getLogger(__name__) 

表示当我从我的Django应用程序调用此模块时,它不会记录到正确的文件。

所以我的问题是,对于共享模块,记录器是否有办法在“父调用者”中使用该实例,换句话说是Django应用程序或独立服务器进程或脚本等?或者它是否必须将记录器实例传递给模块中定义的类(作为构造函数中的参数)?

希望这是有道理的。

感谢。

1 个答案:

答案 0 :(得分:1)

我没有传递记录器对象的方法就是改变

logger = logging.getLogger('exampleApp')

在顶级模块中

logger = logging.getLogger()

以便实际获取root记录器。此根记录器格式将跟随其他模块。