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。