Python记录器记录两次

时间:2019-10-04 14:43:14

标签: python python-3.x logging

我一直在阅读日志记录,我想我了解发生了什么,但是我不知道如何纠正它。我有一个要在其中设置记录器的文件,然后我希望我的应用程序使用该配置的记录器,这是我的logger.py文件:

import logging
import sys

logger = logging.getLogger('mylogger')
logger.setLevel(logging.INFO)
# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter(
    '{levelname} {asctime} {name} {lineno}: {message}', style='{')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

现在,我还有另一个文件可以处理某些功能,因此需要使用此记录器。我们称之为some_class.py,所以我要做的是:

import logging

logger = logging.getLogger('mylogger.someClass')


class SomeClass:
    def __init__(self):
        pass

    def do_something(self):
        logger.critical('A critical message')

现在在runner.py文件中:

import logger

from some_class import SomeClass

SomeClass().do_something()

我的输出是:

CRITICAL 2019-10-04 07:38:38,579 mylogger 25: critical message
CRITICAL 2019-10-04 07:38:38,592 mylogger.SomeClass 12: A critical message

现在的问题是我只想显示类级别记录器的消息。我还尝试将记录器移到类中作为类变量,然后改为引用self.logger,但结果相同。有没有一种方法可以禁用根记录器,或者在这种情况下我怎么会只收到一条日志消息?

0 个答案:

没有答案