如何在Python和Django中登录日志过滤器?

时间:2013-10-10 00:19:48

标签: python django logging filter

我有一个简单的自定义过滤器,它只是将错误的日志级别更改为警告。代码是

import logging

LOG = logging.getLogger(__name__)

class MyErrorFilter(logging.Filter):
    def filter(self, record):
        if record.levelname == 'ERROR':
            print 'get record', str(record), record.levelname, record.levelno
            LOG.warn('check something')
            record.levelname = 'WARNING'
            record.levelno = logging.WARNING
    return 1

过滤器运行良好,但我的过滤器内的LOG.warn(...)没有。我可以看到打印的消息并看到更改的日志级别,但警告消息检查除外。这是预期的行为还是我在这里犯了错误?谢谢!

1 个答案:

答案 0 :(得分:0)

不要从日志记录代码中记录,这本质上是Filter - 它是从日志记录机器内部调用的。日志记录用于从应用程序和库进行日志记录,但不用于记录日志记录中发生的情况。我不是说它不会起作用,但这不是好的做法。没有足够的信息来回答你的问题 - 例如,你没有给出你的日志配置,所以没有办法说明你的LOG.xxx为什么不产生任何输出。