日志管理模块 ❀ loguru
创始人
2025-05-30 16:17:01
0

日志管理模块 ❀ loguru

  • 一、前言
  • 二、logguru的安装
    • 2.1 pip的安装
    • 2.2 Pycharm下安装
    • 2.3 功能特性介绍
  • 三、logguru的功能详解
    • 3.1 开箱即用,无需准备
    • 3.2 add()函数
    • 3.3 更容易的文件日志记录与转存/保留/压缩方式
    • 3.4 日志插件推荐-Ideolog(高亮显示日志)
      • 3.4.1 Pycharm自带插件,安装即可
      • 3.4.2 Ideolog配置
    • 3.5 异常捕获
      • 3.5.1 catch装饰器方法
      • 3.5.2 exception方法
    • 3.6 关闭console输出

一、前言

Python logging模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。

程序开发过程中,很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误、告警等信息输出,Python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法。

使用Python Logging模块的主要好处是所有的Pyhon模块都可以参与日志记录,logging模块提供了大量具有灵活性的功能。

为什么要使用loguru
简单且方便的帮助我们输出需要的日志信息:

使用 Python 来写程序或者脚本的话,常常遇到的问题就是需要对日志进行删除。一方面可以帮助我们在程序出问题的时候排除问题,二来可以帮助我们记录需要关注的信息。
但是,使用自带自带的 logging 模块的话,则需要我们进行不同的初始化等相关工作。对应不熟悉该模块的同学来说,还是有些费劲的,比如需要配置 Handler/Formatter 等。 随着业务的复杂度提升, 对日志收集有着更高的要求, 例如: 日志分类, 文件存储, 异步写入, 自定义类型等等

loguru 是一个 Python 简易且强大的第三方日志记录库,该库旨在通过添加一系列有用的功能来解决标准记录器的注意事项,从而减少 Python 日志记录的痛苦。

二、logguru的安装

2.1 pip的安装

pip install loguru

2.2 Pycharm下安装

在这里插入图片描述

2.3 功能特性介绍

有很多优点,以下列举了其中比较重点的几点:

  • 开箱即用,无需准备
  • 无需初始化,导入函数即可使用
  • 更容易的文件日志记录与转存/保留/压缩方式
  • 更优雅的字符串格式化输出
  • 可以在线程或主线程中捕获异常
  • 可以设置不同级别的日志记录样式
  • 支持异步,且线程和多进程安全
  • 支持惰性计算
  • 适用于脚本和库
  • 完全兼容标准日志记录
  • 更好的日期时间处理

三、logguru的功能详解

3.1 开箱即用,无需准备

from loguru import loggerlogger.debug("日志信息1")

上面的日志记录语句,默认向stderr(控制台)打印了一条输出语句,输出结果如下所示:
在这里插入图片描述
可以看出,loguru默认配置了一套日志输出格式,有时间、级别、模块名、行号以及日志信息,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。所以我们不需要提前配置什么,直接用就可以。

3.2 add()函数

无需初始化,导入函数即可使用,那么你肯定要问,如何解决一下问题?

  • 如何添加处理程序(handler)呢?
  • 如何设置日志格式(logs formatting)呢?
  • 如何过滤消息(filter messages)呢?
  • 如何设置级别(log level)呢?
logger.add(sys.stderr, \  format="{time} {level} {message}",\  filter="my_module",\  level="INFO") 

3.3 更容易的文件日志记录与转存/保留/压缩方式

# 日志文件记录  
logger.add("file_{time}.log")  
# 日志文件转存  
logger.add("file_{time}.log", rotation="500 MB")  
logger.add("file_{time}.log", rotation="12:00")  
logger.add("file_{time}.log", rotation="1 week")  
# 多次时间之后清理  
logger.add("file_X.log", retention="10 days")  
# 使用zip文件格式保存  
logger.add("file_Y.log", compression="zip") 

通过配置rotaion参数,指定文件疼记录的条件
rotation=“500 MB” 可以实现每500MB存储一个日志文件
rotation=“12:00” 每天中午12点创建一个新的日志文件
rotation=“1 week” 每周创建一个新的日志文件

通过配置retention参数,可以指定日志的保留时长
retention=“10 days” 每隔10天就会清理旧的日志,这样就不会造成内存的浪费

通过配置compression参数可以指定日志文件的压缩格式
compression=“zip” 可以指定日志文件的压缩格式为zip格式,可以节省存储空间

3.4 日志插件推荐-Ideolog(高亮显示日志)

3.4.1 Pycharm自带插件,安装即可

在这里插入图片描述

3.4.2 Ideolog配置

进入.log文件中,点击Configure log,通过正则表达式进行匹配需要高亮的关键字,一般错误ERROR关键字进行高亮显示
在这里插入图片描述
效果展示:
在这里插入图片描述

3.5 异常捕获

最让我感到loguru模块功能强大的地方就是它的异常捕获功能。如果程序在运行过程出现崩溃或错误,记录日志是我们回溯程序执行过程的一个重要方式,但是很多时候,根据日志并不知道程序为什么出错或者看不出来程序具体出错在哪些地方,此时如果我们能在日志中记录当异常发生时的情况或者信息,那么多我们解决程序问题来说,简直事半功倍。

在loguru模块中,异常的捕获有两种方式

3.5.1 catch装饰器方法

from loguru import loggerlogger.add("runtime.log") @logger.catch
def my_function(x, y, z):return 1 / (x + y + z)    # An error? It's caught anyway!my_function(0, 0, 0)

上面的代码中,通过catch装饰器对函数my_function进行装饰,这样,当该函数出现异常时,就会打印出异常日志信息,如下所示:
在这里插入图片描述
在日志信息中,不仅指明了异常出现的地方,而且把参数的值也记录下来了。

3.5.2 exception方法

from loguru import loggerlogger.add("runtime.log") def my_function1(x, y, z):try:return 1 / (x + y + z)except ZeroDivisionError:logger.exception("What?!")my_function1(0, 0, 0)

记录的日志信息如下所示:
在这里插入图片描述

3.6 关闭console输出

logger.remove(handler_id=None)

好辣🌶, 关于loguru的介绍就介绍到这里, 喜欢本篇博文记得点赞收藏哦~ ❤☕️

相关内容

热门资讯

C指针:程序员的望远镜 C指针:程序员的望远镜一、什么是指针1.1 指针的定义1.2 指针和普通变量的区别1....
牛客网Java面试题及答案整理... 学习如逆水行舟,尤其是 IT 行业有着日新月异的节奏,我们更要抓紧每一次...
江西宜春智慧停车欠费清缴享7折... 极目新闻记者 杜光然 近日,江西网友发视频称,宜春智慧停车公司开启了端午缴费特惠活动,车主享停车费7...
律数科技申请基于区块链的小额金... 金融界2025年5月31日消息,国家知识产权局信息显示,北京律数科技有限公司申请一项名为“一种基于区...
好用的5款国产低代码平台介绍 一、云程低代码平台 云程低代码平台是一款基于springboot、vue.js技术的企业级低代码...
【数据结构第三章】- 队列 目录 一、队列的定义和特点 二、循环队列 2.1 - CircularQueue.h 2.2 - C...
如何将pdf文件压缩?pdf压... PDF是一种常见的文档格式,因为包括文本格式和图像,我们往往采用这种格式...
0X30数学知识 - 质数 定义: 若一个正整数无法被除了1和它自身之外的任何自然数整除,则称该数...
中方代表:俄乌冲突战场上武器数... 当地时间5月30日,中国常驻联合国副代表耿爽在安理会审议向乌克兰提供武器问题时发言指出,战场上武器数...
法网|冲击八强!女单第四轮,郑... 齐鲁晚报·齐鲁壹点 怀晓 郑钦文将向八强席位发起冲击。新华社发 连下3场击败帕芙柳琴科娃、阿朗戈和...