为共享模块定义python记录器

2024-04-20 07:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

希望我有一个关于python/django日志的简单问题。你知道吗

我正在编写一个Django应用程序,它调用一些与其他进程、作业、脚本共享的模块,甚至可能在适当的时候调用一些其他应用程序,例如公共计算。你知道吗

我已经在中为我的Django应用程序配置了日志记录设置.py然后在我的主要应用程序模块中(视图.py等)我通过以下方式获取记录器:

logger = logging.getLogger('exampleApp')

一切正常。你知道吗

然而,当我的应用程序调用共享的其他包中的模块时,我显然不想拥有相同的模块日志记录.getLogger('exampleApp')调用,因为使用此模块的其他进程将使用不正确的记录器配置。你知道吗

进一步使用

logging.getLogger(__name__) 

意味着当我从Django应用程序调用此模块时,它不会记录到正确的文件。你知道吗

所以我的问题是,对于共享模块,是否有一种方法让记录器使用“父调用方”中的实例,换句话说,Django应用程序或独立服务器进程,或脚本等等?或者它是否像必须将logger实例传递到模块中定义的类(作为构造函数中的参数)那样简单?你知道吗

希望这有道理。你知道吗

谢谢。你知道吗


Tags: 模块django实例py脚本应用程序进程logging
1条回答
网友
1楼 · 发布于 2024-04-20 07:28:59

在不传递logger对象的情况下,我的工作方式是改变

logger = logging.getLogger('exampleApp')

在顶层模块中

logger = logging.getLogger()

所以它实际上得到了root记录器。其他模块将遵循此根记录器格式。你知道吗

相关问题 更多 >