我有三个不同的模块,我们分别称为 ModuleA
、ModuleB
和 Common
。 Common
模块包含 ModuleA
和 ModuleB
都需要的一些辅助方法。
我想为每个模块维护单独的日志文件,这意味着应该有 ModuleA.log
和 ModuleB.log
。因此,在每个模块中,我创建了一个带有文件处理程序和相应文件名的记录器对象。
现在的问题是,如果我从 ModuleA
调用 Common
中的方法,则 Common
中的日志事件应该添加到 ModuleA.log
并且如果我从 ModuleB
调用方法,则 Common
中的日志事件应附加到 ModuleB.log
。为此,目前我正在将相应的 logger
对象作为来自 Common
模块的方法的参数传递,我认为这不是一个好的解决方案。
有什么方法/模式可以处理这种情况吗?
最佳答案
您可以在 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
如果使用字典感觉有点困惑,我认为您可以创建一个类来处理您需要的特定位,它只需要就地更新而不是设置新值。
关于python - python中不同模块的多个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55001259/