设置日志的最小和最大级别,以排除错误
假设我想设置几个处理器,但我不希望logging.ERROR
级别的消息出现在除了logs/error.log
以外的任何文件中。
formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s', datefmt='%m/%d %H:%M:%S')
handler = RotatingFileHandler('logs/debug.log', maxBytes=100000, backupCount=1)
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
error_handler = RotatingFileHandler('logs/error.log', maxBytes=100000, backupCount=1)
error_handler.setFormatter(formatter)
error_handler.setLevel(logging.ERROR)
app.logger.addHandler(handler)
app.logger.addHandler(error_handler)
所以我想要一个处理器来处理从logging.DEBUG
到logging.WARNING
的所有消息,但不包括logging.ERROR
。这样做可以吗?
1 个回答
4
你可以设置一个自定义的日志过滤器,来过滤掉你不需要的日志记录。
class LevelFilter(object):
def __init__(self, level):
self.level = level
def filter(self, record):
return record.levelno != self.level
然后,你可以通过addFilter()
把这个过滤器添加到处理器中:
handler = RotatingFileHandler('logs/debug.log', maxBytes=100000, backupCount=1)
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
handler.addFilter(LevelFilter(logging.ERROR))
这样一来,你就不会在debug.log
文件中看到ERROR
级别的消息了。
另外,你可以查看:
希望这些信息对你有帮助。