我创建了一些Python文件,使我的函数有点分离以便于工作/修复。所有文件都在一个目录中。该结构可能会分解成类似:使用多个模块的python日志记录不起作用
- a.py(A类与基本的东西)
- b.py(B类基本的东西)
- modA.py(创建C类从A和B)
- modB.py导出(创建一个类d从A导出和B)
- ...
- main_a.py(使用C类)
- main_b.py(使用D类)
每个模块都使用python的日志记录。为什么如此 - 只写入根记录器消息。我没有看到我的错误。
这是一个简单的例子。
a.py
import logging
logger = logging.getLogger(__name__)
class A(object):
def __init__(self):
logger.debug("Instance of A")
b.py
import logging
logger = logging.getLogger(__name__)
class B(object):
def __init__(self):
logger.debug("Instance of B")
ab.py
import a
import b
import logging
logger = logging.getLogger(__name__)
class AB(a.A, b.B):
def __init__(self):
logger.debug("Instance of AB")
a.A.__init__(self)
b.B.__init__(self)
main_one.py
import sys
import ab
import logging
import logging.handlers
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stderr)
handler.setLevel(logging.DEBUG)
handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
logger.addHandler(handler)
logger.warning("The trouble starts")
ab = ab.AB()
我也尝试使用类似self.logger = logging.getLogger(type(self).__name__)
的东西来记录每个类的基础,但结果是一样的。那么当您阅读python日志手册时,您可能会指出我出错的地方吗?
TIA。
编辑1:我的解决方案
由于两者@falsetru和@Jakub M.,同时使用的答案会导致一个有效的解决方案。
首先我把所有东西放在一个层次结构中。
main_one.py
lib/
__init__.py
ab.py
basic/
__init__.py
a.py
b.py
其次,我在main_one.py
改变了logger = logging.getLogger(__name__)
到logger = logging.getLogger()
(没有名称为根记录!)。
这样做。
非常有帮助的是代码段on GitHub。
好了 - 这解决了一个工作基地问题,但还是带来了一些问题。据我所见,我失去了可移植性? – daniel
@丹尼尔我不明白你的意思是'丢失可移植性'。 – falsetru
@daniel,https://github.com/search?l=Python&q=getLogger&type=Code – falsetru