跳转到内容

Loguru 教程

Loguru 是一个旨在让 Python 中的日志记录变得有趣且无比简单的第三方开源库。它彻底解决了原生 logging 模块需要配置繁琐的 Formatter、Handler 和 Logger 层级的痛点,开箱即可输出带颜色且能定位到具体代码行数的精美日志。

(安装依赖:pip install loguru)


无需任何实例化操作,直接引入全局唯一的 logger 对象即可开火。

from loguru import logger
logger.debug("That's it, beautiful and simple logging!")
logger.info("系统正常启动。")
logger.error("发生了致命错误!")

2.2. 日志文件落盘与生命周期管理 (Rotation & Retention)

Section titled “2.2. 日志文件落盘与生命周期管理 (Rotation & Retention)”

使用单一的 add() 接口,可以极简地配置出企业级的日志滚动归档策略:

from loguru import logger
# 1. 基础落盘:自带时间戳变量命名
logger.add("logs/file_{time}.log")
# 2. 自动拆分 (Rotation)
logger.add("logs/file_{time}.log", rotation="12:00") # 每天中午 12 点强制滚动生成新文件
logger.add("logs/file_{time}.log", rotation="1 MB") # 日志达到 1MB 时自动切分新文件
logger.add("logs/file_{time}.log", rotation="1 week") # 每周切割
# 3. 自动清理旧日志 (Retention)
logger.add("logs/file_{time}.log", retention="10 days") # 自动删除 10 天前的旧日志
# 4. 自动压缩归档 (Compression)
logger.add("logs/file_{time}.log", rotation="50 MB", compression="zip") # 滚动切分后立刻打成 ZIP 包省空间

2.3. 高阶神器:异常堆栈静默捕获 (@logger.catch)

Section titled “2.3. 高阶神器:异常堆栈静默捕获 (@logger.catch)”

通过装饰器,能够自动捕获函数运行时的所有未处理异常,并连同异常发生时的 全部局部变量 和代码追踪堆栈一起详细写入日志,而且不中断上层调用:

@logger.catch
def my_function(x, y, z):
# 如果 x+y+z 为 0,引发的 ZeroDivisionError 会被 loguru 完美记录
return 1 / (x + y + z)
my_function(0, 0, 0)