网站首页 > 技术文章 正文
loguru简介
loguru 是 Python 的一个第三方日志模块,相较于标准库 logging 模块,它提供了更简洁易用的 API,内置丰富的格式化、过滤、文件输出等高级功能。loguru 让 Python 日志记录变得非常简单、Pythonic。
loguru 的优点包括
- API 简单易用
- 功能强大,内置多种高级日志功能
- 高性能,速度快过标准 logging
- 支持格式化日志输出
- 方便地输出到文件
- 自动记录异常栈跟踪
- 添加过滤器控制日志级别
- 旧日志自动归档压缩
loguru的基本用法
loguru 的用法非常简单。首先,需要安装一下
pip install loguru
安装完成后,我们只需要导入模块,创建 logger,就可以开始打印日志了
from loguru import logger
logger.info("Hello, loguru!")
logger.debug("This is a debug message.")
和 Python 标准 logging 模块不同,loguru 可以直接通过 logger 对象使用各个级别的日志方法,而不需要获取特定的 logger。
日志默认输出到系统 stderr。我们可以通过 add() 方法指定输出日志文件的路径,如
logger.add("file_1.log")
logger.add("file_2.log", level="WARNING")
level 参数控制日志级别,低于该级别的日志不会输出到指定文件中。
loguru的高级用法
格式化日志
loguru 支持通过 format 参数自定义日志内容和格式。我们可以使用各种变量来生成所需的日志格式
logger.add("debug.log", format="{time} {level} {message}", level="DEBUG")
常用的变量包括
- {time} 日志时间
- {level} 日志等级
- {message} 日志消息
- {module} 模块名
- {function} 函数名
过滤日志
通过 filter 参数,我们可以定义过滤函数来精确控制哪些日志可以输出
logger.add("error.log", filter=lambda record: record["extra"].get("error_type") == "OSError")
这样只有当日志的 error_type 字段为 OSError 时,才会输出到 error.log。
异常栈跟踪
loguru 可以非常方便地记录异常栈跟踪信息,
try:
1/0
except ZeroDivisionError:
logger.exception("Division by zero!")
exception 方法会自动捕获异常栈到日志中。
文件压缩与归档
日志文件到达大小限制后,loguru 会自动压缩归档,并创建新的日志文件,之前的日志也不会丢失。
loguru与logging模块的比较
相比于 logging,loguru 具有以下优势
- API 更简洁易用
- 内置格式化日志和过滤器功能
- 文件日志支持自动归档压缩
- 无需定义 FORMATTER 和 FILTER,直接通过参数配置
- 支持异常栈跟踪记录
- 速度更快
所以,loguru 在易用性和功能性上都优于 logging。
总结
loguru 是一个非常好用的 Python 日志模块,提供了简洁强大的日志功能。它的简单 API、灵活过滤、文件处理等特性可以大大方便日志记录工作。希望本文可以让大家对 loguru 有一个初步的了解,并可以利用它来提升项目的日志能力,更多高级用法请参考 loguru 的官方文档,https://github.com/Delgan/loguru。
猜你喜欢
- 2025-01-21 [819]ScalersTalk成长会Python小组第10周学习训练日志
- 2025-01-21 使用Python操作Jenkins(创建,构建,获取Job日志和报告)
- 2025-01-21 「python小脚本」监听日志文件异常数据发送告警短信
- 2025-01-21 告别千篇一律,Python打印彩色日志的方法!
- 2025-01-21 用Python写一个MacOS的系统通知
- 2025-01-21 Python 自制日志装饰器
- 2025-01-21 Python如何在日志中隐藏明文密码
- 2025-01-21 Kubernetes日志采集ELK|收集Python项目日志并展示
- 2025-01-21 Python接口自动化核心模块 - 数据库操作和日志
- 2025-01-21 python模块之 loguru 日志模块
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)