Py学习  »  Python

loguru,一个神奇的 Python 库!

python • 5 月前 • 369 次点击  


大家好,今天为大家分享一个神奇的 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不仅提供了丰富的基础功能,更通过其先进的设计理念和实用的高级特性,为各种规模的项目提供了可靠的日志记录基础设施。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

我们还为大家准备了Python资料,感兴趣的小伙伴快来找我领取一起交流学习哦!

图片

往期推荐

历时一个月整理的 Python 爬虫学习手册全集PDF(免费开放下载)

Beautiful Soup快速上手指南,从入门到精通(PDF下载)

Python基础学习常见的100个问题.pdf(附答案)

124个Python案例,完整源代码!

30 个Python爬虫的实战项目(附源码)

从入门到入魔,100个Python实战项目练习(附答案)!

80个Python数据分析必备实战案例.pdf(附代码),完全开放下载

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183307