【python】logging日志打印重复输出冗余日志

本文详细分析了Python日志重复输出的原因,即未移除logger的handler导致的,并提出了三种解决方法:1) 在添加handler前进行判断;2) 每次创建不同name的logger;3) 记录完日志后移除handler。同时提供了一个日志管理的实例代码。
摘要由CSDN通过智能技术生成

问题描述:

日志重复输出,且数量递增。

原因分析:没有移除handler

  1. 实际上logger = logging.getLogger("logger")在执行时,是先检查内存中是否存在一个叫做‘logger.log’的logger对象,存在则取出,不存在则新建。
  2. 实例化的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’,输出三条重复的日志

解决方案:在日志记录完之后removeHandler

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值