我试图在登录到控制台时删除一些信息,然后在登录到文件时保留这些信息
这是一个基本示例:
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 是造成这种情况的原因。有没有办法实现我想要的,或者我试图以这种方式做不到的?