Python:在多个模块中使用一个记录器实例

时间:2018-11-21 16:08:36

标签: python global-variables

作为python的新手,我终于设法在一个额外模块(tools.py)的类中创建了自己的自定义记录器。这里的主要成就之一是,我可以设置记录器的名称,并且还可以设置日志文件的名称。

我想在一个模块(recalc.py)中实例化main中的记录器,并从此处在另一个模块(getData.py)中调用函数prepData。 getData.py模块中的prepData函数应该使用在recalc.py中实例化的记录器实例。 prepData正在使用相同记录器实例的相同模块中调用其他函数。

我无法掌握如何声明/实例化记录器的方法,因为只有具有main函数的in模块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, one class used across multiple modules等中读到了很多有关(不是真正存在的)全局变量的信息。 config.py解决方案意味着在config.py本身中初始化全局变量。但这对我不起作用,因为只有主模块才知道记录器名称。

从长远来看,我现在所拥有的解决方法是不可接受的。 感谢您的帮助。

0 个答案:

没有答案