Python中Loguru模块的具体使用

 更新时间:2025年10月19日 11:31:04   作者:运维开发小白  
loguru 是一个 Python 简易且强大的第三方日志记录库,该库旨在通过添加一系列有用的功能来解决标准记录器的注意事项,从而减少 Python 日志记录的痛苦,感兴趣的可以了解一下

1.Loguru模块的基本概念

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

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

为什么要使用loguru?

简单且方便的帮助我们输出需要的日志信息

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

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

2.Loguru模块的安装与特性

2.1 安装

[root@localhost ~]# pip3 install loguru # 安装模块
[root@localhost ~]# pip3 show loguru # 查看模块相关信息

2.2 功能特性

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

3.Loguru模块的功能详解

1.开箱即用

# ======================
# -*-coding: Utf-8 -*-
# ======================
from loguru import logger

logger.debug('debug log')

上面的日志记录语句,默认向stderr(控制台)打印了一条输出语句,输出结果如下所示

​可以看出,loguru默认配置了一套日志输出格式,有时间、级别、模块名、行号以及日志信息,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。所以我们不需要提前配置什么,直接用就可以

2.定义日志输出时的行为

​要达到logging中的Handler(日志输出地)、Formattetr(日志输出格式)、Filter(过滤输出的日志数据的效果,以及定义输出日志级别等等,全都可以在logger.add()这一个函数中完成

# ======================
# -*-coding: Utf-8 -*-
# ======================
from loguru import logger
import os
# 当前文件的目录路径
dir_path = os.path.abspath(os.path.dirname(__file__))
# 日志路径
log_file_path = os.path.join(dir_path,'loguru.log')
# 配置日志输出到文件,输出最低等级为info,格式自定义
logger.add(log_file_path,format="{time} {level} {message}",level="INFO")
logger.debug('debug msg')
logger.info('info msg')
logger.warning('warning msg')
logger.error('error msg')

日志文件的转存

# ======================
# -*-coding: Utf-8 -*-
# ======================
from loguru import logger
import os
# 当前文件的目录路径
dir_path = os.path.abspath(os.path.dirname(__file__))
# 日志路径
log_file_path = os.path.join(dir_path,'loguru_{time:%Y-%m-%d}.log')
# 配置日志输出到文件,输出最低等级为info,格式自定义
logger.add(log_file_path,format="{time} {level} {message}",level="INFO")
logger.debug('debug msg')
logger.info('info msg')
logger.warning('warning msg')
logger.error('error msg')

# 通过配置rotaion参数,指定文件转存的条件
logger.add(log_file_path,rotation="500MB") # 超过500MB自动分割文件
logger.add(log_file_path,rotation="12:00") # 每天固定时间定时创建文件
logger.add(log_file_path,rotation="1 week") # 每隔一段时间创建文件

# 通过配置retention参数,指定文件存储的条件
logger.add(log_file_path,retention="10 days") # 可以指定日志的保留时长 ,retention=“10 days” 每隔10天就会清理旧的日志,这样就不会造成内存的浪费

# 通过配置compression参数可以指定日志文件的压缩格式
logger.add(log_file_path,compression="gz")

​有add()就有remove(),add()函数定义了日志输出行为后,会返回一个int类型的id,remove()函数通过这个id就可以删除之前在add()函数中所定义的东西

# ======================
# -*-coding: Utf-8 -*-
# ======================
from loguru import logger
import os
# 当前文件的目录路径
dir_path = os.path.abspath(os.path.dirname(__file__))
# 日志路径
log_file_path = os.path.join(dir_path,'loguru_{time:%Y-%m-%d}.log')
# 配置日志输出到文件,输出最低等级为info,格式自定义
logger.add(log_file_path,format="{time} {level} {message}",level="INFO")
# 删除刚才在add()自定义输出
logger.remove()
logger.debug('debug msg')
logger.info('info msg')
logger.warning('warning msg')
logger.error('error msg')

文件的日志内容是空白的

remove(handler_id=None): 会删除之前所有add()中自定义的东西,包括Loguru的默认配置

到此这篇关于Python中Loguru模块的具体使用的文章就介绍到这了,更多相关Python Loguru模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux centos 7.x 安装 python3.x 替换 python2.x的过程解析

    linux centos 7.x 安装 python3.x 替换 python2.x的过程解析

    这篇文章主要介绍了linux centos 7.x 安装 python3.x 替换 python2.x的过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python 数据类型--集合set

    Python 数据类型--集合set

    这篇文章主要介绍了Python 数据类型集合set,在集合中的元素是无序的、唯一的、不可变的类型,它还有一个特殊的列表,可以对数据去重,下面来对其进行更彻底的认识吧,需要的小伙伴可以参考一下
    2022-02-02
  • Python requirements.txt的具体使用

    Python requirements.txt的具体使用

    requirements.txt文件是项目的依赖包及其对应版本号的信息列表,本文主要介绍了Python requirements.txt的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Python 3.x 安装opencv+opencv_contrib的操作方法

    Python 3.x 安装opencv+opencv_contrib的操作方法

    下面小编就为大家分享一篇Python 3.x 安装opencv+opencv_contrib的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python 实现查询Neo4j多节点的多层关系

    python 实现查询Neo4j多节点的多层关系

    今天小编就为大家分享一篇python 实现查询Neo4j多节点的多层关系,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python使用logging实现多进程安全的日志模块

    Python使用logging实现多进程安全的日志模块

    这篇文章主要为大家详细介绍了Python如何使用标准库logging实现多进程安全的日志模块,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2024-01-01
  • Python实现解构PPT并提取文本、图片和表格

    Python实现解构PPT并提取文本、图片和表格

    在企业级应用和科研场景中,PPT 不再仅仅是演示工具,它更是一个承载了大量核心业务信息的非结构化数据库,本文将从开发者角度出发,介绍如何解构 PPT 并提取文本、图片和表格,让你的演示文档从视觉展示工具进化为可操作的数据源,希望对大家有所帮助
    2026-01-01
  • 使用Python和Flask编写一个留言簿

    使用Python和Flask编写一个留言簿

    本文将通过创建一个简单的留言簿应用来入门Flask,这个项目可以帮助我们理解Flask的基本概念和功能,如路由、模板、表单处理等,感兴趣的可以了解下
    2024-12-12
  • Python中Numpy mat的使用详解

    Python中Numpy mat的使用详解

    这篇文章主要介绍了Python中Numpy mat的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Python3爬虫中关于中文分词的详解

    Python3爬虫中关于中文分词的详解

    在本篇文章里小编给大家整理的是关于Python3爬虫中关于中文分词的详解内容,需要的朋友们可以参考下。
    2020-07-07

最新评论