我创建了一个覆盖一些字符串的覆盖格式化程序:
class MaskFormatter(logging.Formatter):
def __init__(self, fmt, mask):
logging.Formatter.__init__(self, fmt, mask)
self.mask = mask
def format(self, record):
result = logging.Formatter.format(self, record)
if result is not None and result.find(self.mask) != -1:
result = result.replace(self.mask, '*' * len(self.mask))
return result
我这样用:
formatter = MaskFormatter('%(asctime)s %(levelname)s' +
' %(module)s %(lineno)d %(message)s', mask='abcde')
hdlr.setLevel(logging.DEBUG)
logger.setLevel(logging.DEBUG)
hdlr.setFormatter(formatter)
然而在我的日志行中,我注意到日期时间现在也被掩盖了!!虽然我曾要求它只掩盖“abcde”,有人可以帮忙吗?
所有日志行都有前缀*****
而不是真正的日期时间:
***** DEBUG mail
答案 0 :(得分:3)
查看日志格式化程序的文档,它说Formatter有两个可选参数。第一种是消息格式,第二种是日期时间格式。看起来您正在以日期时间格式发送掩码。尝试从logging.Formatter中删除mask参数。 init 调用。