我正在尝试在登录到控制台时删除一些信息,但在登录文件时保留该信息
这是一个基本的例子:
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是导致这种情况的原因。 有没有办法实现我想要的东西,或者是我试图以这种方式做不到的事情?
答案 0 :(得分:2)
我认为您需要的是logging.Formatter
:
class MyFormatter(logging.Formatter):
def format(self, record):
return record.msg.replace("test", "")
#...
console.setFormatter(MyFormatter())
#...