python - Python:跨多个模块使用一个记录器实例
问题描述
作为 python 的新手,我终于设法在一个额外模块(tools.py)的一个类中创建了我自己的自定义记录器。这里的主要成就之一是我可以设置记录器的名称以及日志文件名。
我想在一个模块(recalc.py)中实例化主记录器,并从这里调用另一个模块(getData.py)中的函数prepData。模块 getData.py 中的函数 prepData 应该使用我在 recalc.py 中实例化的记录器实例。prepData 正在调用同一模块中应使用同一记录器实例的其他函数。
我无法掌握如何声明/实例化记录器,因为只有带有主函数的模块 recalc.py 知道记录器的正确名称。
module tools.py
:
class Logg():
:
.
module recalc.py
import tools
from getData import prepData
:
lg = Logg("recalc", ...) # instantiate the logger
:
result = prepData(...)
.
module getData.py
:
def otherFunc()
lg.debug(...)
:
return X
def prepData(...)
lg.info(...)
:
x = otherFunc(...)
:
return RES
我读了很多关于 Python 中(不是真正存在的)全局变量的文章,还有Python 3,一个跨多个模块和其他模块使用的类。config.py 解决方案意味着在 config.py 本身中启动全局变量。但这对我不起作用,因为只有主模块知道记录器名称。
从长远来看,我现在的解决方法是不可接受的。我很感激任何帮助。
解决方案
推荐阅读
- vuejs2 - vuejs 从组件中的特定部分获取 html
- java - 从 /login 重定向到 / 用于经过身份验证的用户
- c - 如何清空 GLib 树?
- google-analytics - Google 跟踪代码管理器 - 每个域的分析
- powershell - 如何使用 Artifactory API 从 PowerShell 创建存储库?
- reactjs - 响应式更改页面上的内容时,Redux 表单呈现为未初始化状态(并且无法初始化)
- php - 在php中将反斜杠json字符串转换为真实的json数组
- android - 导航架构组件 - 将参数数据传递给 startDestination
- php - Form.php 文件不通过输入的数据发送
- javascript - 为什么我的方法未定义?