应用Python日志过滤器

时间:2016-01-06 20:45:33

标签: 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))

如果我不应用过滤器,那么我会在终端中打印出错误消息并写入文件,但是当我添加停止的过滤器时。我该如何解决这个问题?

1 个答案:

答案 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