Django 用 Loguru 完美替换标准 Logging,实现优雅的日志管理方案

Django 用 Loguru 完美替换标准 Logging,实现优雅的日志管理方案

这篇文章将详细拆解如何将强大的loguru库深度集成到 Django 项目中,彻底解决原生logging配置冗长、难以维护的痛点。


为什么要进行方案替换

Django 默认的日志配置通过LOGGING字典实现,嵌套层级多且语法繁琐。相比之下,loguru提供了更直观的 API 和自动化的日志轮转管理。

核心技术要点

  • 全量拦截:通过自定义InterceptHandler类,将 Django 内置、Gunicorn 容器以及第三方库产生的标准logging消息全部重定向至loguru

  • 精准溯源:利用sys._getframe动态查找调用栈,确保日志中显示的文件名和行号是真实的业务逻辑位置,而非拦截器本身。

  • 自动化策略:配置文件输出时,只需一行代码即可实现凌晨定时切割日志(rotation)和 30 天自动清理(retention)。

  • 并发安全:开启enqueue=True选项,利用多线程/进程安全的队列机制,防止高并发下日志写入冲突。

部署实践:一键接管 Django 日志

在项目中创建日志工具模块后,只需在settings.py顶部导入,并设置LOGGING_CONFIG = None即可禁用 Django 原生逻辑。

Python

import os import sys import logging from pathlib import Path from loguru import logger # 路径初始化 BASE_DIR = Path(__file__).resolve().parent.parent log_dir = os.path.join(BASE_DIR, "logs") log_file_path = os.path.join(log_dir, "dt_test.log") if not os.path.exists(log_dir): os.makedirs(log_dir) # 拦截器定义:核心在于深度(depth)的计算 class InterceptHandler(logging.Handler): def emit(self, record): try: level = logger.level(record.levelname).name except ValueError: level = record.levelno frame, depth = sys._getframe(6), 6 while frame and 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_CONFIG = None def setup_loguru(debug_mode: bool = True): logger.remove() log_format = "{time:YYYY-MM-DD HH:mm:ss,SSS} | {level: <8} | {name} [{module}.{function}:{line}] | {message}" # 控制台调试输出 if debug_mode: logger.add(sys.stdout, level="DEBUG", format=log_format, enqueue=True) # 文件持久化配置:支持每天凌晨切割与压缩 logger.add( log_file_path, level="DEBUG", format=log_format, rotation="00:00", retention="30 days", encoding="utf-8", enqueue=True, compression="zip" ) # 重定向系统级日志 logging.basicConfig(handlers=[InterceptHandler()], level=0, force=True) for name in ["django", "django.server", "gunicorn.access", "gunicorn.error"]: _log = logging.getLogger(name) _log.handlers = [InterceptHandler()] _log.propagate = False setup_loguru()

放在settings.py顶部或者原来日志配置信息全部删除后的地方

效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1210710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026小学辅导机构实测TOP4|宝妈必藏!精准选机构不踩雷

2026小学辅导机构实测TOP4|宝妈必藏!精准选机构不踩雷宝妈们集合啦!是不是一到给娃选小学辅导机构就头大?线下机构跑断腿对比,线上信息五花八门辨不清真假,试听课报了一堆,要么娃不适应,要么效果差强人意,白白…

2026年广州节日定制礼盒公司推荐:广州甄选食材有限公司,精品礼盒定制/定制礼盒/礼盒包装定制/包装礼盒定制/高档礼盒定制公司精选

在当代品牌营销与消费升级的浪潮下,定制礼盒已演变为 “品牌无声的代言人”。一份来自2025年的行业洞察报告显示,超过78%的消费者 表示,高品质、有设计感的包装会显著提升他们对产品本身的好感度与购买意愿。 从食品…

小学辅导机构怎么选?这3个硬指标帮你避坑

小学辅导机构怎么选?这3个硬指标帮你避坑小学辅导机构怎么选?这3个硬指标帮你避坑(附2026靠谱品牌测评) 一、家长必看!选对机构先避这 3 大坑 给孩子挑选小学辅导机构,是家长们的心头大事,选对了,孩子学习进步…

2026年保健食品集合店优选:供应链实力大比拼,进口保健食品/保健食品/进口热销品集合店,保健食品集合店加盟代理有哪些

随着消费升级与健康需求多元化,保健食品集合店成为零售市场的重要赛道。如何选择具备核心竞争力的供应链服务商,成为行业关注的焦点。本次评测以权威技术视角,横向对比市面主流供应链企业,重点分析战略布局、供应链…

【Django毕设源码分享】基于 Python 的考研学习系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【Django毕设源码分享】基于Python的毕业生去向反馈调查平台的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026济南雅思培训学校深度测评TOP5:高分提分方案谁更靠谱?

在雅思备考赛道中,济南雅思考生普遍面临多重困境:基础薄弱者无从搭建系统备考框架,单项卡分者难以突破技巧瓶颈,在职党与学生党受限于碎片化时间,多数人在五花八门的济南雅思培训学校中陷入选课迷茫,既渴望优质教…

【Django毕设源码分享】基于django的学生选课系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

避坑指南:如何选择靠谱的雅思培训?2026季度综合评分排行榜出炉

在竞争日益激烈的留学申请中,雅思成绩已成为通往海外名校的关键钥匙。对于济南乃至全国的考生而言,面对市场上琳琅满目的雅思培训课程,如何选课才能实现高效提分、获得理想高分?备考路上,考试压力、技巧瓶颈、时间…

救命神器8个AI论文网站,专科生搞定毕业论文不求人!

救命神器8个AI论文网站&#xff0c;专科生搞定毕业论文不求人&#xff01; 专科生的毕业论文救星&#xff0c;AI 工具正在改变写作方式 对于很多专科生来说&#xff0c;撰写毕业论文是一项既复杂又令人焦虑的任务。从选题到查资料&#xff0c;再到撰写和降重&#xff0c;每一…

WebApp 本地部署全景指南(实战版)

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 在 AI 时代,越来越多的开发者利用 Gemini AI Studio 或其他生成式工具快速创建 WebApp。但很多生…

认识 Promise

一、使用Promise管理异步任务的基础步骤 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content=&qu…

雅思课培训机构深度测评排行榜:从行业痛点解析到优选方案(2026版)

众多考生陷入“刷题无效、提分停滞”的困局,而好的培训帮助学员告别“无效努力”,在雅思之路上走得更稳更快。 雅思考生数量近年来持续攀升。最新数据显示,中国内地雅思考生总量持续增长,其中学生群体占比超六成,…

吐血推荐!10个AI论文网站测评:本科生毕业论文必备工具

吐血推荐&#xff01;10个AI论文网站测评&#xff1a;本科生毕业论文必备工具 2026年AI论文工具测评&#xff1a;为什么你需要这份榜单 随着人工智能技术在学术领域的深度渗透&#xff0c;越来越多的本科生开始依赖AI写作工具辅助毕业论文的撰写。然而&#xff0c;面对市场上…

实测封神!2026高中线上补习班TOP5:选对1家,提分少走3年弯路

实测封神!2026高中线上补习班TOP5:选对1家,提分少走3年弯路一、高中各阶段提分痛点与线上补习优势 (一)高中三年提分关键期的核心挑战 高中三年,是无数莘莘学子为梦想拼搏的关键时期,每一个阶段都面临着独特的提…

连接数据库并部署到Linux上使用Docker Compose编排的go语言网络聊天室

项目概述 这是一个基于Go语言开发的完整聊天室系统&#xff0c;采用客户端-服务器架构&#xff0c;支持用户注册、登录认证、即时聊天、私聊等功能。项目使用MySQL作为数据存储&#xff0c;通过Docker容器化部署&#xff0c;展现了现代分布式应用的典型设计模式。 技术栈 后…

性价比高的太原文创伴手礼定制厂家

性价比高的太原文创伴手礼定制厂家引言在当今社会&#xff0c;文创产品越来越受到人们的喜爱。无论是作为企业礼品、会议纪念品还是旅游纪念品&#xff0c;高质量且具有创意的伴手礼不仅能够传递情感&#xff0c;还能提升品牌形象。太原作为历史文化名城&#xff0c;拥有丰富的…

工程化思维破解协同与锁死难题:Java企业的AI集成新思路

在AI技术深度渗透企业业务的今天&#xff0c;Java技术团队普遍面临一个核心难题&#xff1a;不同大模型各有专精——有的擅长数据分析&#xff0c;有的精通代码生成&#xff0c;有的适配多模态交互&#xff0c;但如何让这些“专精选手”协同作战&#xff0c;同时避免被单一厂商…

2025年商业邮件诈骗攻击趋势深度解析

BEC邮件趋势&#xff1a;2025年攻击量增长15% 商业邮件诈骗是一种复杂的网络钓鱼攻击&#xff0c;欺诈者冒充公司高管、员工和财务专业人员&#xff0c;旨在进行数据盗窃和金融诈骗。根据联邦调查局互联网犯罪投诉中心的报告&#xff0c;它仍然是造成损失最严重的网络攻击之一…

ijkplayer相关实用链接

编译完成后导入项目使用&#xff1a; Android Studio引用ijkplayer - 简书