我为我的错误消息创建了一个日志记录过滤器,用于设置环境变量。但是,当我将过滤器应用到我的记录器时,它会停止将我的错误消息打印到终端/将它们写入我的记录文件。
过滤器看起来像这样:
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))
如果我不应用过滤器,那么我会在终端中打印出错误消息并写入文件,但是当我添加停止的过滤器时。我该如何解决这个问题?
答案 0 :(得分:1)
您必须从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