module1.py
#!/usr/bin/env python
import logging
LOGGER = logging.getLogger(__main__)
class MyClass()
def __init__(self):
LOGGER.info('test')
Versus
module2.py
#!/usr/bin/env python
import logging
class MyClass()
def __init__(self):
self.LOGGER = logging.getLogger(__main__)
self.LOGGER.info('test')
在我看来,就像module2.py在其他模块导入时会产生一些不可预测的结果。 我不确定。
答案 0 :(得分:1)
logging.getLogger()
返回一个单例(每个给定的名字);将其存储为模块全局或实例属性没有区别。在这两种情况下,您的代码都引用了相同的对象。
对具有相同名称的
getLogger()
的多次调用将始终返回对同一Logger对象的引用。
来自logging.getLogger()
function本身:
对具有给定名称的此函数的所有调用都返回相同的记录器实例。这意味着记录器实例永远不需要在应用程序的不同部分之间传递。