使用多个模块进行python日志记录不起作用

我创建了一些Python文件,使我的功能保持分离,以简化工作/修复。所有文件都在一个目录中。该结构可能会分解为以下内容:

  • a.py(具有基本知识的A类)

  • b.py(具有基本知识的B类)

  • modA.py(创建派生自A和B的类C)

  • modB.py(创建派生自A和B的类D)

  • ...

  • 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日志记录手册时出了错吗?


撒科打诨
浏览 200回答 2
2回答

jeck猫

所有模块都使用相同的记录器名称。__name__是模块名称;a,b,ab,main_one...logger = logging.getLogger('daniel_lib')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python