如何使记录器全局化,以便可以在生成的每个模块中使用它?
在moduleA中是这样的:
import logging
import moduleB
log = logging.getLogger('')
result = moduleB.goFigure(5)
log.info('Answer was', result)
在模块B中:
def goFigure(integer):
if not isinstance(integer, int):
log.critical('not an integer')
else:
return integer + 1
目前,我将得到一个错误,因为moduleB不知道log
是什么。我该怎么解决这个问题?
默认情况下,模块只能访问builtin functions和builtin constants。对于所有其他变量、函数。。。您必须使用关键字
import
。现在对于您的具体示例,您可以导入
log
中moduleA
的log
-变量,如下所示:由于logging-模块返回的日志记录器实例与返回到
moduleA
的日志记录器实例相同,因此以下内容是等效的:另一个解决方案是使用logging模块的默认记录器,如下所示:
创建可用于
创建一个名为myLogger.py的模块:这将包含日志创建代码
myLogger.py文件:
现在要在模块中创建新的日志,请说a.py
因此,在获取记录器时必须传递文件名。
要在A.py中使用全局记录器,请执行以下操作:
在这种情况下不需要传递文件名,因为我们将使用全局日志。
您可以创建自己的日志“模块”来实例化日志记录器,而不是让所有的代码导入它。想一想:
日志.py:
代码a.py:
代码.py:
相关问题 更多 >
编程相关推荐