侧边栏壁纸
博主头像
学习笔记

行动起来,活在当下

  • 累计撰写 2 篇文章
  • 累计创建 2 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

将 Python 标准库 logging 重定向到 Loguru

cm
cm
2025-09-22 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

在 Python 开发中,日志记录是不可或缺的环节。Python 自带的标准库 logging模块功能强大但配置复杂,常常让开发者陷入繁琐的配置和格式化工作中。相比之下,第三方库 Loguru提供了更简单、更直观的 API,同时保持了强大的功能。

然而,许多现有项目已经大量使用了标准库的 logging模块,完全重构这些代码以使用 Loguru 可能不切实际。幸运的是,我们可以通过一个拦截处理器(Intercept Handler)将标准库的日志无缝重定向到 Loguru,实现平滑过渡。

1. 依赖安装

在开始之前,我们需要安装 Loguru 库。这是一个纯 Python 实现的第三方库,安装过程非常简单:

pip install loguru

或者使用uv 安装

uv add loguru

2. 代码实现

from loguru import logger
import logging

class InterceptHandler(logging.Handler):
    def emit(self, record):
        # 获取对应的loguru级别
        try:
            level = logger.level(record.levelname).name
        except ValueError:
            level = record.levelno

        # 找到对应的loguru记录器
        frame, depth = logging.currentframe(), 2
        while frame.f_code.co_filename == logging.__file__:
            frame = frame.f_back
            depth += 1

        logger.opt(depth=depth, exception=record.exc_info).log(
            level, record.getMessage()
        )

# 配置logging使用我们的拦截器
logging.basicConfig(handlers=[InterceptHandler()], level=0)

0

评论区