正在应用Python日志记录过滤器



我为设置环境变量的错误消息创建了一个日志过滤器。然而,当我将过滤器应用于我的记录器时,它会停止将我的错误消息打印到终端/将它们写入我的日志文件。

过滤器如下所示:

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

最新更新