【Python】 - Loguru日志管理神器
Python - Loguru日志管理神器
每日一学,学无止境。
不管是项目开发还是脚本编写,在代码出现错误时都想更加方便清晰的排查问题,此时就会使用到日志记录,但是python官方的logging库配置起来确实不怎么方便,以前我也是自己通过自定义封装logging类来实现日志管理,直到发现loguru库,果断放弃了logging库,接下来通过本人日常开发时对loguru库的使用来与大家分享一下,如果需要深入了解可以查看官方文档。
1、安装Loguru库
直接通过pip包安装即可。
pip install loguru
# 或者指定国内源安装更快一些
pip install loguru -i https://pypi.mirrors.ustc.edu.cn/simple/
2、基本使用
官方文档所说Loguru的主要概念是有且只有一个logger记录器,以下是默认配置下的基本使用。
from loguru import logger
# 记录不同级别的日志信息
logger.debug("这是一条debug日志.")
logger.info("这是一条Info日志.")
logger.warning("这是一条warning日志.")
logger.error("这是一条error日志.")
logger.critical("这是一条critical日志.")
执行以上代码,控制台会使用不同颜色打印不同级别的日志信息。

以上代码只能将日志打印到控制台,这样肯定不是我们想要的,我们肯定想程序停止后也能查看之前所有的日志信息,所以我们需要将日志记录到本地文件,记录日志文件到本地文件也非常简单,只需要一行代码即可。
记录日志文件
from loguru import logger
# 添加日志到文件
logger.add("project.log")
logger.info("这是一条Info日志.")
这样就会在当前文件所在目录下创建一个project.log文件,文件内显示打印内容。
自定义格式
Loguru日志记录器也支持自定义格式,使用add()函数构建自定义参数。
import sys
from loguru import logger
# 移除默认格式,添加自定义日志格式
logger.remove()
logger.add(sys.stderr, format="{time} {level} {message}")
logger.add("project.log", format="{time} {level} {message}")
logger.info("这是一条自定义INFO日志.")
个人建议日志的打印格式使用默认的,如果确实不能满足你的需求,可以参考官方进行配置。
日志轮询
日志轮转有三种方式:文件大小、固定时间、超过时间
from loguru import logger
logger.add("file1_{time}.log", rotation="50 MB") # 单个日志文件超过50M则创新创建一个新日志文件
logger.add("file2_{time}.log", rotation="12:00") # 每天12:00创建一个新文件
logger.add("file3_{time}.log", rotation="1 week") # 超过一周创建一个新文件
日志保留
日志记录其实并不需要一直保留,这样会占用我们硬盘空间,我们可以根据实际情况调整保留多长时间内的日志文件。
from loguru import logger
logger.add("file_X.log", retention="10 days") # 只保留10天内的日志文件
日志压缩
日志记录文件本身可能比较大,有时可能几十或者上百兆,我们可以通过参数compression来讲记录完的日志文件进行压缩保存,这样能节省硬盘空间以及日志拷贝。
from loguru import logger
logger.add("file_Y.log", compression="zip") # 指定压缩文件格式
3、实战效果
通过以上方法,基本已经满足常规的日志记录,以下是本人在实战中使用的部分代码示例,如果需要更加深入使用,可以查看官方文档。
# main.py / run.py 主入口函数
import sys
from loguru import logger
# 配置日志信息
logger.remove()
logger.add("./Log/{time}.log", level="INFO", rotation='10 MB', compression="zip", retention="30 days")
logger.add(sys.stderr, level="INFO")
# 业务逻辑
start_task()
其它代码文件中只需要 from loguru import logger 就行了,因为logger对象有且只有一个。
更多推荐


所有评论(0)