Python日志记录 - 使用过滤器删除信息

时间:2013-05-08 20:15:17

标签: python logging

我正在尝试在登录到控制台时删除一些信息,但在登录文件时保留该信息

这是一个基本的例子:

import logging
import sys

class MyFilter(logging.Filter):
    def filter(self, record):
        record.msg = record.msg.replace("test", "")
        return True

logger = logging.getLogger("mylogger")
logger.setLevel(logging.DEBUG)

console = logging.StreamHandler(sys.stdout)
console.setLevel("INFO")
logger.addHandler(console)

logfile = logging.FileHandler("log.txt", 'w')
logfile.setLevel("ERROR")
logger.addHandler(logfile)

filt = MyFilter()
console.addFilter(filt)

logger.info("test one")
logger.error("test two")

我想在控制台上看到的是

one
two

然后在日志文件中

test two

但它实际上只是

two

我假设编辑LogRecord是导致这种情况的原因。 有没有办法实现我想要的东西,或者是我试图以这种方式做不到的事情?

1 个答案:

答案 0 :(得分:2)

我认为您需要的是logging.Formatter

class MyFormatter(logging.Formatter):   
    def format(self, record):
       return record.msg.replace("test", "")

#...
console.setFormatter(MyFormatter())
#...