3

我试图在登录到控制台时删除一些信息,然后在登录到文件时保留这些信息

这是一个基本示例:

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 是造成这种情况的原因。有没有办法实现我想要的,或者我试图以这种方式做不到的?

4

1 回答 1

3

我认为您需要的是logging.Formatter

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

#...
console.setFormatter(MyFormatter())
#...
于 2013-05-08T20:36:37.090 回答