Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将日志语句放在模块级和类级有什么区别吗?_Python_Logging - Fatal编程技术网

Python 将日志语句放在模块级和类级有什么区别吗?

Python 将日志语句放在模块级和类级有什么区别吗?,python,logging,Python,Logging,模块1.py #!/usr/bin/env python import logging LOGGER = logging.getLogger(__main__) class MyClass() def __init__(self): LOGGER.info('test') #!/usr/bin/env python import logging class MyClass() def __init__(self): self.LOGGER = l

模块1.py

#!/usr/bin/env python
import logging
LOGGER = logging.getLogger(__main__)
class MyClass()
    def __init__(self):
        LOGGER.info('test')
#!/usr/bin/env python
import logging
class MyClass()
    def __init__(self):
        self.LOGGER = logging.getLogger(__main__)
        self.LOGGER.info('test')

module2.py

#!/usr/bin/env python
import logging
LOGGER = logging.getLogger(__main__)
class MyClass()
    def __init__(self):
        LOGGER.info('test')
#!/usr/bin/env python
import logging
class MyClass()
    def __init__(self):
        self.LOGGER = logging.getLogger(__main__)
        self.LOGGER.info('test')
在我看来,当被其他模块导入时,module2.py会给出一些不可预测的结果。 但是我不确定。

logging.getLogger()
返回一个单例(每个给定名称);将其存储为全局模块或实例属性没有区别。您的代码在这两种情况下都引用了相同的对象

引述:

使用相同名称多次调用
getLogger()
,将始终返回对同一记录器对象的引用

而从它本身来看:

使用给定名称对此函数的所有调用都返回相同的记录器实例。这意味着不需要在应用程序的不同部分之间传递记录器实例


六羟甲基三聚氰胺六甲醚。。。。。你的回答有道理。这也是我的想法,但似乎我仍然看到奇怪的输出。一个问题。。。。。。如果我们先导入日志,然后再登录。getLogger(名称)与从日志导入getLogger,然后再登录getLogger(名称)有关系吗(或者有什么区别)?不,没有任何区别。它仍然是您正在引用的同一个函数。