大家好,今天为大家分享一个神奇的 Python 库 - loguru。
Github地址:https://github.com/Delgan/loguru
loguru是Python生态系统中的现代化日志记录库,由Delgan开发并持续维护。该库旨在解决Python标准logging模块在使用过程中的复杂性和配置繁琐问题,提供了更加直观和用户友好的日志记录体验。loguru的设计理念强调简洁性和功能性的完美结合,使开发者能够以最少的配置获得强大的日志记录功能。
安装
1、安装方法
loguru可以通过Python包管理器pip进行便捷安装,支持Python 3.5及以上版本:
pip install loguru
对于需要额外功能支持的环境,可以安装包含可选依赖的完整版本:
pip install "loguru[complete]"
2、验证安装
安装完成后,可以通过以下简单代码验证loguru是否正确安装并正常工作:
from loguru import logger
logger.info("loguru安装验证成功")
logger.success("日志系统初始化完成")
执行上述代码后,控制台将显示带有时间戳、日志级别和彩色输出的日志信息,确认安装成功。
特性
-
零配置即用:无需复杂的初始化配置,导入后即可直接使用,大幅减少了项目启动时间和配置工作量。
彩色日志输出:自动提供彩色终端输出,不同日志级别使用不同颜色显示,提高了日志信息的可读性和识别度。
线程安全设计:内置线程安全机制,支持多线程和异步环境下的并发日志记录,确保日志信息的完整性和一致性。
灵活的格式化:支持字符串插值、结构化日志和自定义格式模板,满足不同场景的日志格式需求。
智能文件轮转:提供基于时间、文件大小和条件的自动日志文件轮转功能,有效管理磁盘空间使用。
异常跟踪增强:自动捕获和记录异常堆栈信息,提供比标准库更详细的错误诊断信息。
基本功能
1、基础日志记录
loguru的核心优势在于其简洁的使用方式和丰富的日志级别支持。开发者无需进行复杂的配置即可开始记录日志,同时框架提供了从调试到错误的完整日志级别体系。
from loguru import logger
# 不同级别的日志记录
logger.debug("调试信息:变量值检查")
logger.info("应用程序启动完成")
logger.warning("配置文件使用默认值")
logger.error("数据库连接失败")
logger.critical("系统内存不足")
# 新增的日志级别
logger.success("用户注册成功")
logger.trace("详细的执行轨迹信息")
# 带参数的日志记录
user_id = 12345
action = "登录"
logger.info("用户 {} 执行 {} 操作", user_id, action)
2、文件日志配置
loguru提供了灵活的文件日志配置机制,支持自定义日志格式、文件路径和轮转策略。通过简单的配置,可以实现日志文件的自动管理,包括按时间或大小进行文件轮转,确保日志系统在长期运行中的稳定性和可维护性。
from loguru import logger
# 移除默认处理器
logger.remove()
# 添加文件日志处理器
logger.add(
"application.log",
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} | {message}",
level="INFO",
rotation="10 MB",
retention="30 days",
compression="zip"
)
# 添加控制台输出
logger.add(
sys.stderr,
format="{time:HH:mm:ss} | {level} | {message}",
level="DEBUG"
)
logger.info("配置完成,开始记录日志")
3、结构化日志
结构化日志是现代应用程序监控和分析的重要基础,loguru支持将上下文信息绑定到日志记录中,便于后续的日志分析和处理。
from loguru import logger
# 绑定上下文信息
logger = logger.bind(user_id=12345, request_id="req-abc-123")
# 记录带有上下文的日志
logger.info("处理用户请求")
logger.warning("请求处理超时")
# 使用with语句临时绑定上下文
with logger.contextualize(operation="data_processing"):
logger.info("开始处理数据")
logger.success("数据处理完成")
# 结构化数据记录
user_data = {"name": "张三", "age": 30, "department": "技术部"}
logger.info("用户信息更新", extra=user_data)
高级功能
1、自定义过滤器和处理器
loguru支持高度定制化的日志处理流程,开发者可以根据业务需求创建自定义过滤器和处理器。通过精细化的控制机制,可以确保日志系统在满足合规要求的同时提供最大的诊断价值。
from loguru import logger
import sys
def sensitive_filter(record):
"""过滤敏感信息"""
message = record["message"]
# 过滤包含密码的日志
if"password"in message.lower():
returnFalse
returnTrue
def error_handler(record):
"""错误日志特殊处理"""
if record["level"].name == "ERROR":
# 发送错误通知或写入特殊文件
with open("error_alerts.log", "a") as f:
f.write(f"ALERT: {record['time']} - {record['message']}\n")
# 配置带过滤器的处理器
logger.add(
"filtered.log",
filter=sensitive_filter,
format="{time} | {level} | {message}",
level="INFO"
)
# 配置错误处理器
logger.add(
error_handler,
level="ERROR",
format="{time} | {level} | {name} | {message}"
)
# 测试日志
logger.info("用户登录成功")
logger.warning("用户密码即将过期") # 将被过滤
logger.error("数据库连接异常") # 触发错误处理
2、异步日志和性能优化
loguru提供了异步日志记录功能,能够将日志写入操作从主执行路径中分离,避免I/O阻塞对应用性能的影响。同时,框架支持批量写入和缓冲机制,进一步提高了日志系统的吞吐量,确保在高负载环境下仍能保持良好的性能表现。
from loguru import logger
import asyncio
import time
# 配置异步日志处理器
logger.add(
"async.log",
format="{time} | {level} | {message}",
enqueue=True, # 启用异步队列
backtrace=True,
diagnose=True
)
asyncdef async_operation():
"""异步操作示例"""
logger.info("开始异步操作")
await asyncio.sleep(0.1)
logger.success("异步操作完成")
def performance_test():
"""性能测试"""
start_time = time.time()
for i in range(1000):
logger.info("性能测试日志 {}", i)
end_time = time.time()
logger.info("1000条日志记录耗时: {:.3f}秒", end_time - start_time)
# 运行异步操作
asyncio.run(async_operation())
# 执行性能测试
performance_test()
总结
loguru作为现代化的Python日志记录解决方案,通过简洁的API设计和强大的功能特性,显著改善了传统日志系统的使用体验。其零配置启动、彩色输出、线程安全和灵活的定制能力,使得开发团队能够快速构建高质量的日志系统,提高应用程序的可观测性和可维护性。loguru不仅提供了丰富的基础功能,更通过其先进的设计理念和实用的高级特性,为各种规模的项目提供了可靠的日志记录基础设施。