首页 > 解决方案 > python中不同模块的多个日志文件

问题描述

我有三个不同的模块,让我们调用ModuleA和。该模块包含一些和都需要的辅助方法。ModuleBCommonCommonModuleAModuleB

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

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

有什么方法/模式来处理这种情况吗?

标签: pythonpython-3.xlogging

解决方案


您可以有一个缓存字典,Common因为其他模块将能够导入和修改。

这是一个带有字符串的简单示例:

通用.py

CACHE = {'logger': None}

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

模块A.py

from Common import CACHE, func

CACHE['logger'] = 'mod a'

func()
#mod a

模块B.py

from Common import CACHE, func

CACHE['logger'] = 'mod b'

func()
#mod b

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


推荐阅读