问题描述:
日志重复输出,且数量递增。
原因分析:没有移除handler
- 实际上logger = logging.getLogger("logger")在执行时,是先检查内存中是否存在一个叫做‘logger.log’的logger对象,存在则取出,不存在则新建。
- 实例化的logger对象,通过具有‘handlers’这样一个属性来存储 Handler:
- logger.handlers最初是一个空列表,执行‘logger.addHandler(sh)’添加一个‘StreamHandler’,输出一条日志;
- 在第二次被调用时,logger.handlers已经存在一个‘StreamHandler’,再次执行‘logger.addHandler(sh)’就会再次添加一个‘StreamHandler’,此时的logger有两个‘StreamHandler’,输出两条重复的日志;
- 在第三次被调用时,logger.handlers已经存在两个‘StreamHandler’,再次执行‘logger.addHandler(sh)’就会再次添加一个,此时的logger有三个‘StreamHandler’,输出三条重复的日志