python 日志处理 logging模块 日志写入重复 问题

当使用Python的logging模块时,发现日志记录出现重复写入的现象,即每次调用记录日志,写入次数递增。问题在于未移除handler。解决方案包括在日志记录完后调用removeHandler移除handler,或者在log方法中检查logger是否已存在handler,避免重复添加。这样可以确保日志正确且唯一地被记录。
摘要由CSDN通过智能技术生成

现象:

使用logging模块保存日志,第一条记录写一次,第二条记录写两次,第三条记录写三次,日志写入重复。

原因:

没有移除handler 解决:在日志记录完之后removeHandler

例如:

def log(msg):
    #创建logger,如果参数为空则返回root logger
    logger = logging.getLogger("nick")
    logger.setLevel(logging.DEBUG)  #设置logger日志等级
​
    #创建handler
    fh = logging.FileHandler("test.log",encoding="utf-8")
    ch = logging.StreamHandler()
​
    #设置输出日志格式
    formatter = logging.Formatter(
        fmt="%(asctime)s %(name)s %(filename)s %(message)s",
        datefmt="%Y/%m/%d %X"
        )
​
    #为handler指定输出格式
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
​
    #为logger添加的日志处理器
    logger.addHandler(fh)
    logger.addHandler(ch)
​
    # 输出不同级别的log
    logger.info(msg)
​
log("泰拳警告")
log("提示")
log(&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值