【拓展】Loguru:更为优雅、简洁的Python 日志管理模块

【拓展】Loguru:更为优雅、简洁的Python 日志管理模块

【一】引入

  • 在 Python 开发中涉及到日志记录,我们或许通常会想到内置标准库 —— logging 。
  • 虽然logging 库采用的是模块化设计,可以设置不同的 handler 来进行组合,但是在配置上较为繁琐。
  • 同时在多线程或多进程的场景下,若不进行特殊处理还会导致日志记录会出现异常。
  • 本文将介绍一个十分优雅、简洁的日志记录第三方库—— loguru ,我们可以通过导入其封装的logger 类的实例,即可直接进行调用。

【二】安装

  • 使用 pip 安装即可,Python 3 版本的安装如下:
pip3 install loguru

【三】基本使用

【1】使用方法

  • 我们直接通过导入loguru 封装好的logger 类的实例化对象,不需要手动创建 logger,直接进行调用不同级别的日志输出方法。

【2】示例

from loguru import logger

logger.debug('This is debug information')
logger.info('This is info information')
logger.warning('This is warn information')
logger.error('This is error information')

【3】样式

  • 在 IDE 或终端运行时会发现
    • loguru 在输出的不同级别信息时,带上了不同的颜色,使得结果更加直观
    • 其中也包含了时间、级别、模块名、行号以及日志信息。

【4】不同日志级别与日志记录方法对应关系

  • loguru 中不同日志级别与日志记录方法对应关系 如下:
级别名称 严重度值 记录器法
TRACE 5 logger.trace()
DEBUG 10 logger.debug()
INFO 20 logger.info()
SUCCESS 25 logger.success()
WARNING 30 logger.warning()
ERROR 40 logger.error()
CRITICAL 50 logger.critical()
  • 简单语法
logger.trace('这是一条记录日志)
logger.debug('这是一条测试日志')
logger.info('这是一条信息日志')
logger.success('这是一条成功日志')
logger.warning('这是一条警告日志')
logger.error('这是一条错误日志')
logger.critical('这是一条严重错误日志')

【5】日志规则

  • 设置日志格式,过滤器,日志级别
from loguru import logger

logger.add("file.log", format="{time} {level} {message}", level="INFO")

logger.debug("这是一条测试日志")
logger.info("这是一条信息日志")
  • 终端展示
2023-08-07 23:16:25.307 | DEBUG    | __main__:<module>:18 - 这是一条测试日志
2023-08-07 23:16:25.307 | INFO     | __main__:<module>:19 - 这是一条信息日志

【6】保存到文件

from loguru import logger

logger.add("file.log")

logger.debug("这是一条debug日志")
logger.info("这是一条info日志")
  • 结果为目录多出一个日志文件:file.log

【7】日志文件拆分(add方法)

  • 由于日志文件会非常大,所以实际情况中会对日志文件进行拆分。
from loguru import logger

logger.add("log_{time}.log", encoding='utf-8')  # 以时间命名

【四】loguru 配置日志文件

  • logger 默认采用 sys.stderr 标准错误输出将日志输出到控制台中,假如想要将日志同时输出到其他的位置,比如日志文件,此时我们只需要使用一行代码即可实现。
  • 例如,将日志信息输出到 2021-3-28.log 文件中,可以这么写:
from loguru import logger

logger.add("E:/Old Boy/day_projects/日志模块/log_2023-8-7.log",rotation="500MB", encoding="utf-8", enqueue=True, retention="10 days")

logger.info('This is info information')
  • 终端显示结果
2023-08-07 22:47:11.611 | INFO     | __main__:<module>:19 - This is info information
  • 如上,loguru直接通过 add() 方法,完成了日志文件的配置。

【五】日志内容的字符串格式化

  • loguru 在输出 日志的时候,还提供了非常灵活的字符串格式化输出日志的功能,如下:
i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值