loguru——Python优雅日志包

本文详细介绍Python日志库loguru的使用方法,包括配置、常见用法及注意事项。loguru提供简洁易用的日志记录功能,支持定时清理过期日志,避免日志文件无限增长。同时对比logging模块,loguru在配置上更为便捷,但不支持某些高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                         loguru——Python优雅日志包

参考文档:

常用用法(其他用法与细节,参考以上文档):

from loguru import logger
import sys

logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")
logger.add("file_{time}.log")
logger.debug('this is a debug')

运行结果:

log文件如下:

需求:新建一个日志文件夹,定时清除过期日志。demo如下:

from loguru import logger

logger.add("./logs/detail.log",
           level="INFO",
           encoding="utf-8",
           format="{level} | {time:YY-MM-DD HH:mm:ss} | {file} | {line} | {message}",
           rotation="00:00",
           retention="7 days")

logger.add("./logs/error.log",
           level="ERROR",
           encoding="utf-8",
           format="{level} | {time:YY-MM-DD HH:mm:ss} | {file} | {line} | {message}",
           rotation="00:00",
           retention="7 days")


logger.info("今天下雨了")
logger.error("肚子痛,好难受!")

运行结果:

踩过的一个大坑:python,loguru日志递增式的重复打印,且无法保存为不同的日志文件

  • 封装loguru.logger为一个类,并用其他子类来继承父类,目的:不同功能的日志保存在不同的日志文件中。
  • 结果:控制台正常打印日志,但是日志文件会出现重复打印结果,并且是递增式地重复,极速增大日志内存,风险很大;同时不同日志文件中的日志结果是一样的。
  • 原因分析:
  • A. 解释为啥日志结果一样:logger_1、logger_2和logger_3跟logger指向的是同一个对象【就算是封装,也少不了xxx = logger】。这些”变量”只不过是这个对象的名字而已,所以代码本质上就是给logger这个名字对应的对象绑定了几个文件,自然每个文件的内容都是完全一样的。但是单独运行子功能代码肯定是没有问题的,一旦存在日志文件相互调用,就会出现问题。

  • B. 解释为啥日志结果递增式重复:loguru全局只有一个logger,logging可以通过名字的不同创建多个,所以每出现一次,就会存在递增式重复调用。

  • C. 解释真的无法分开保存吗?答:不是,可以配置filter,但是需要对每个输出日志进行过滤判断,违背了保存日志的初衷,得不偿失。

  • 解决措施:主函数配置好日志文件的保存路径后,调用子模块中的loguru.logger,就不要再在子模块中添加日志文件配置了。强迫症表示很难受,对吧?
  • 总结:logger与loguru的区别是什么?

        A. 从安装来看,logging不需要安装,loguru需要安装;

        B. 从配置的角度,loguru全局只有一个logger,logging可以通过名字的不同创建多个;

        C. 配置loguru相比配置logging更加简便;

        D. 其他模块的支持,这里面其他模块指定是import 的其他模块,比如,系统中import peewee,在peewee中使用了logging模块,如果想要打印peewee中的日志,logging可以通过配置打印出来,而loguru是不支持的。

参考:Python日志详解【两篇就够了系列】--第二篇loguru

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值