我为设置环境变量的错误消息创建了一个日志过滤器。然而,当我将过滤器应用于我的记录器时,它会停止将我的错误消息打印到终端/将它们写入我的日志文件。
过滤器如下所示:
class ErrorFilter(logging.Filter):
def __init__(self,level):
self.level = level
def filter(self,record):
if record.levelno == self.level:
os.environ["ERROR_FLAG"] = "True"
像这样应用:
logger = Utils.getLogger()
logger.addFilter(ErrorFilter(logging.ERROR))
如果我不应用过滤器,那么我会在终端中打印错误消息并将其写入文件,但当我添加过滤器时,就会停止。我该如何解决这个问题?
您必须从filter
方法返回一些内容。如果返回类似0
的值,它将不会记录任何内容。如果您返回一个非零值,它将记录该值。
在您的情况下,您没有显式返回任何内容,因此它返回None
,这是一个非零值——这就是为什么它没有记录任何内容。您可以将其更改为以下内容:
class ErrorFilter(logging.Filter):
def __init__(self,level):
self.level = level
def filter(self,record):
if record.levelno == self.level:
os.environ["ERROR_FLAG"] = "True"
return True