在 Python 开发中,日志记录是不可或缺的环节。Python 自带的标准库
logging模块功能强大但配置复杂,常常让开发者陷入繁琐的配置和格式化工作中。相比之下,第三方库 Loguru提供了更简单、更直观的 API,同时保持了强大的功能。然而,许多现有项目已经大量使用了标准库的
logging模块,完全重构这些代码以使用 Loguru 可能不切实际。幸运的是,我们可以通过一个拦截处理器(Intercept Handler)将标准库的日志无缝重定向到 Loguru,实现平滑过渡。
1. 依赖安装
在开始之前,我们需要安装 Loguru 库。这是一个纯 Python 实现的第三方库,安装过程非常简单:
pip install loguru或者使用uv 安装
uv add loguru2. 代码实现
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)
评论区