我一直在阅读日志记录,我想我了解发生了什么,但是我不知道如何纠正它。我有一个要在其中设置记录器的文件,然后我希望我的应用程序使用该配置的记录器,这是我的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
,但结果相同。有没有一种方法可以禁用根记录器,或者在这种情况下我怎么会只收到一条日志消息?