python - python中不同模块的多个日志文件
问题描述
我有三个不同的模块,让我们调用ModuleA
和。该模块包含一些和都需要的辅助方法。ModuleB
Common
Common
ModuleA
ModuleB
我想为每个模块维护单独的日志文件,这意味着应该有ModuleA.log
and ModuleB.log
. 因此,在每个模块中,我都创建了一个带有文件处理程序和相应文件名的记录器对象。
现在的问题是,如果我在Common
fromModuleA
中调用一个方法,则应该将其中的日志事件Common
添加到ModuleA.log
,如果我从 中调用一个方法ModuleB
,则应该将其中的日志事件Common
附加到ModuleB.log
. 为此,目前我正在将相应的logger
对象作为参数传递给Common
模块中的方法,我觉得这不是一个好的解决方案。
有什么方法/模式来处理这种情况吗?
解决方案
您可以有一个缓存字典,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 感觉有点乱,我认为您可能会创建一个类来处理您需要的特定位,它只需要就地更新而不是设置新值。
推荐阅读
- r - R基本功能点()可以复制
- python - 在输出之前拼合邮件合并的文档
- scala - 使用scala在hdfs中锁定文件生成
- javascript - 我无法将事件绑定到元素
- c# - 仍在学习 'System.StackOverflowException' 被抛出。
- php - 如何通过从数据库中获取电子邮件 ID 及其 smtp 配置来使用 phpmailer 发送电子邮件
- android - 我需要摆脱我的 build.gradle 文件 Android Studio 中发生的突出显示。我该怎么做呢?
- regex - 如何忽略除符号“/”之外的域区域之后的所有内容
- javascript - 饼图中的负值
- php - HTTP post 请求以发送数据并获取响应 (API)