来自python中不同模块的多个日志文件

时间:2019-03-05 10:59:11

标签: python python-3.x logging

我有三个不同的模块,分别称为ModuleAModuleBCommonCommon模块包含ModuleAModuleB都需要的一些辅助方法。

我想为每个模块维护单独的日志文件,这意味着应该有ModuleA.logModuleB.log。因此,在每个模块中,我都创建了一个带文件处理程序和相应文件名的log​​ger对象。

现在的问题是,如果我从Common调用ModuleA中的方法,则Common中的日志事件应添加到ModuleA.log中,并且如果我调用方法从ModuleB开始,Common中的日志事件应附加到ModuleB.log。为此,目前我正在从logger模块的方法中传递一个相应的Common对象作为方法上的参数,我认为这不是一个好的解决方案。

有什么方法可以解决这种情况吗?

1 个答案:

答案 0 :(得分:1)

您可能在Common中有一个缓存指令,其他模块将能够导入和修改。

这是一个简短的字符串示例:

Common.py

CACHE = {'logger': None}

def func():
    print(CACHE['logger'])

ModuleA.py

from Common import CACHE, func

CACHE['logger'] = 'mod a'

func()
#mod a

ModuleB.py

from Common import CACHE, func

CACHE['logger'] = 'mod b'

func()
#mod b

如果使用dict感到有些混乱,我认为您可以创建一个类来处理所需的特定位,它只需要就地更新而不是设置新值。