首页 > 解决方案 > 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 本身中启动全局变量。但这对我不起作用,因为只有主模块知道记录器名称。

从长远来看,我现在的解决方法是不可接受的。我很感激任何帮助。

标签: pythonglobal-variables

解决方案


推荐阅读