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

标签 python python-3.x logging

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

我想为每个模块维护单独的日志文件,这意味着应该有 ModuleA.logModuleB.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/

相关文章:

python - 类型错误 : _log() got an unexpected keyword argument 'stacklevel'

python - 检查python中的elasticsearch连接状态

python - 如何使 matplotlib 标题可搜索?

tomcat - Jersey - 不扫描资源?

apache - 如何在 CentOS 7 中分析 httpd (apache webserver) 日志

python-3.x - 如何读取ElementTree中特定子节点的文本?

Python、Selenium、BS4 - 导航到下一页

python - Scrapy 如何从多个页面抓取项目?

python - 在数据库中存储逻辑

list - Python : search through list of tuples