[python]loguru库包

669 阅读3分钟

loguru 是一个为简化 Python 日志记录而设计的第三方库,其核心优势是开箱即用,无需复杂配置即可开始记录日志。

它旨在让日志记录变得和print()一样简单,同时又具备生产环境所需的强大功能。

注意: 我们在进行python开发的时候, 经常会在代码中写print(xxx), 因为我们想在代码执行的时候, 打印一些信息, 帮助我们进行判断. 但是print()这个函数确实功能比较单一. 而且对于任何的信息没有区分性.

1/Loguru 的核心特点

下表是它相较于 Python 标准 logging 模块的主要优势:

特点说明
开箱即用导入后无需配置处理器、格式化器,可直接记录日志。
强大的文件管理支持按时间、文件大小滚动日志,自动压缩、定时删除旧文件。
优雅的格式化默认输出带颜色的高亮日志,使用 {} 进行更清晰的字符串格式化。
更好的异常捕获通过装饰器自动捕获并记录异常完整的堆栈跟踪信息,包括变量值。
结构化日志支持输出为 JSON 格式,便于后续用工具解析和分析。
完全兼容标准 logging可与 Python 原生的 logging 模块互操作。
线程/进程安全默认线程安全,通过参数也可支持多进程或异步环境。

2/快速上手使用

1. 安装

pip install loguru

2. 基础使用

from loguru import logger

logger.debug("这是一条调试信息")
logger.info("程序启动成功")
logger.warning("磁盘空间不足")
logger.error("连接数据库失败")
logger.success("操作成功!")  # Loguru 独有的级别

运行后,终端会输出带颜色、时间、等级和代码位置的信息。

3. 将日志写入文件

from loguru import logger

# 添加一个文件日志 sink,日志将同时输出到终端和文件
logger.add("my_app.log")
logger.info("这条信息会被记录到文件里")

4. 设置日志滚动与保留

# 按大小滚动:超过 10 MB 创建新文件
logger.add("app.log", rotation="10 MB")
# 按时间滚动:每天中午创建新文件
logger.add("app.log", rotation="12:00")
# 保留策略:最多保留 7 个旧日志文件
logger.add("app.log", retention=7)
# 自动压缩:滚动后的旧日志自动压缩为 .zip
logger.add("app.log", compression="zip")

5. 捕获异常 使用 @logger.catch 装饰器,可以自动记录函数内发生的异常及其完整堆栈。

@logger.catch
def risky_operation(x, y):
    return x / y

risky_operation(1, 0)  # 会自动记录 ZeroDivisionError

3/进阶使用技巧

  • 自定义格式:通过 format 参数可以完全控制日志输出的样式。
  • 结构化日志:添加 serialize=True 参数,日志会以 JSON 格式输出,方便集成到日志分析系统(如 ELK)。
  • 上下文绑定:使用 logger.bind(user_id=123) 可以为一系列日志添加固定的上下文信息。
  • 在库中使用:如果你是库的开发者,应使用 logger.disable(__name__) 来默认禁用日志,将控制权交给应用的使用者。

4/如何选择:loguru 还是 logging?

  • 选择 Loguru:如果你追求快速上手、配置简单、功能强大,或者厌倦了 logging 模块的复杂配置,loguru 是绝佳选择。它特别适合脚本、中小型应用和需要快速实现可靠日志的场景。
  • 使用标准 logging:如果你的项目深度依赖或必须遵循复杂的现有 logging 配置,或者是一个需要极其精细控制底层日志流程的大型框架或平台。

总结来说,loguru 通过极简的API封装了强大的功能,能显著提升开发效率和日志可读性。