当前位置: 首页 > news >正文

04-django配置日志-loguru

django中使用日志模块-loguru

  • loguru 是一个替代 Python logging 的第三方库;
  • loguru的用法非常简单,在 loguru 中有且仅有一个对象:logger。

1、基本使用方式:

安装模块后直接导入使用即可!

from loguru import logger
logger.info("11111111111111111111")
logger.warning("11111111111111111111")
logger.error("11111111111111111111")

输出效果:
在这里插入图片描述

安装:

这里有个注意点: 安装固定的版本!!

python环境3.10,最新版本0.7.3,会报错: ModuleNotFoundError: No module named 'win32_setctime'
# 先卸载当前版本
pip uninstall loguru -y
# 安装一个稳定版本(例如0.7.2,可根据你之前的版本调整)
pip install loguru==0.7.2

安装后就可以直接使用了,如果需要自定义配置和输出保存日志,再进行如下封装:

2、二次封装:

封装的日志模块路径:common—>utils–>logu文件夹中;
可以根据自己需求根据注释调整日志代码即可!
在这里插入图片描述
setting.py

"""
-*- coding: utf-8 -*-
@File  : setting.py
描述:日志框架的配置
"""
import os
from pathlib import Path# 获取项目根目录
# project_root = settings.BASE_DIR
# 日志文件存储配置
LOGURU_FILE = {"is_show": "off","level": "ERROR",'path': os.path.join(Path(__file__).parent, 'logs', 'test{time:YYYY-MM-DD}.logu'),"rotation": "10MB",'retention': "7days",
}
# 日志控制台配置
LOGURU_CONSOLE = {"is_show": "on",  # 配置是否开启控制台打印日志"level": "INFO",  # 最低打印级别是info级别
}
"""
TRACE: 最详细的日志信息,用于追踪代码执行过程。Loguru默认情况下使用DEBUG级别作为最低日志记录级别,而不是TRACE级别。这是因为TRACE级别会产生大量的日志信息。
DEBUG: 用于记录详细的调试信息,通常只在开发过程中使用,以帮助诊断问题。
INFO: 用于记录常规信息,比如程序的正常运行状态或一些关键的操作。
SUCCESS: 通常用于记录操作成功的消息,比如任务完成或数据成功保存。
WARNING: 用于记录可能不是错误,但需要注意或可能在未来导致问题的事件。
ERROR: 用于记录错误,这些错误可能会影响程序的某些功能,但通常不会导致程序完全停止。
CRITICAL: 用于记录非常严重的错误,这些错误可能会导致程序完全停止或数据丢失。
"""

log.py

"""
-*- coding: utf-8 -*-
@File  : log.py
描述:logu 封装类!
"""
import os
from pathlib import Path
from loguru import logger
import sys
from common.utils.logu import settingclass LoguruConfig:def __init__(self):self._file_set = setting.LOGURU_FILEself._console_set = setting.LOGURU_CONSOLEdef configure(self):logger.remove()  # 清除所有现有的日志处理器(如果有的话)# 控制台输出if self._console_set.get('is_show', '').lower() == "on":# 设置处理程序处理的日志消息的最低级别。level = self._console_set.get('level', 'INFO')# 只需要在add方法中添加配置即可!logger.add(# 定义日志消息的输出位置,可以是文件路径、标准输出(stdout)、标准错误(stderr,默认)或其他自定义的输出位置。sink=sys.stderr,# format="{time:xxxx过滤条件} {level:xxxxxxxx过滤条件} {message}" 日志的格式化显示配置# logger.add('runtime.log', format="{time} {level} {message}", filter="my_module", level="INFO")# 以下是自定义显示样式,默认的就挺好看了!format="<level>{level:<8}|  </level>"  # level显示设置宽度占8个字符"<u><green>{file.path}:{line}</green></u> : \r\n""        ""<level>{message}</level>",  # 显示的日志信息colorize=True,  # 默认是True level会根据不同级别显示不同颜色enqueue=True,  # 异步日志backtrace=True,  # 确定异常跟踪是否应该延伸到捕获错误的点之外diagnose=True,  # 确定变量值是否应在异常跟踪中显示)# 在本目录下生成日志文件  注意:此行为了简单使用,可以直接添加输出到当前目录!# logger.add('logu.log')# 文件保存if self._file_set.get('is_show', '').lower() == "on":log_path = self._file_set.get('path', os.path.join(Path(__file__).parent.parent.parent, '../../../logs','test{time:YYYY-MM-DD}.logu'))level = self._file_set.get('level', 'INFO')rotation = self._file_set.get('rotation', '10MB')retention = self._file_set.get('retention', '7 days')logger.add(log_path,rotation=rotation,  # 日志的最长保留时间!retention=retention,  # 用于设置日志文件的保留时间。compression='zip',  # 布尔值,指定 配置文件的压缩格式encoding="utf-8",enqueue=True,  # 异步日志 布尔值,指定是否将日志消息放入队列中处理,用于多线程应用中避免阻塞。format="[{time:YYYY-MM-DD HH:mm:ss} {level:<6} | {file}:{module}.{function}:{line}]  {message}",level=level,)# 给logger对象添加自定义配置
config = LoguruConfig()
config.configure()
log = logger;  # 调整名字为log
if __name__ == '__main__':# 测试log.debug("这是一条跟踪消息")  # 不打印log.info("这是一条普通信息")  # 设置了打印info级别及以上log.success("操作成功完成")log.warning("这是一条警告信息")log.error("这是一条错误信息")log.critical("这是一条严重错误信息")

init.py

"""
-*- coding: utf-8 -*-
描述: 注意安装 pip install logu
"""
from .log import log

使用封装的loguru:

导包:

from common.utils import log

使用:

	log.debug("这是一条跟踪消息")  # 不打印log.info("这是一条普通信息")  # 设置了打印info级别及以上log.success("操作成功完成")log.warning("这是一条警告信息")log.error("这是一条错误信息")log.critical("这是一条严重错误信息")
http://www.dtcms.com/a/395127.html

相关文章:

  • docker离线部署gpt-oss-20b流程,从下载到安装再到可以使用
  • 关系数据库MySQL的常用基础命令详解实战
  • 面向动态环境的MEC突破:MLGO微算法科技推出自适应权重深度确定性策略梯度(AWDDPG)算法,革新多用户任务迁移技术
  • Ansys Zemax | 确保自由曲面设计的可制造性
  • 智造新势力:看“文化+科技”如何重塑制造新范式
  • 【算法训练营Day25】动态规划part1
  • 打破网络壁垒:使用内网穿透轻松实现远程桌面访问
  • 2025 PyCharm IDE 社区版与专业版合并后,新手该如何安装?(附 Toolbox 图形化安装教程)
  • 07-css元素定位布局
  • 波动率曲面及SVI模型的Python数值拟合
  • 基于Python新闻平台的文本数据挖掘系统
  • 2017/12 JLPT听力原文 问题四
  • 【Tawk】Tawk.to聊天小部件移动端位置调整完整指南
  • jieba 库
  • 开启 3D 之旅 - 你的第一个 WebGL 三角形
  • 基于AWS Lambda的机器学习动态定价系统 CI/CD管道部署方案介绍
  • 3D 文件格式解释
  • 对Hive表进行归档,减少小文件的影响
  • R 中,geo 数据集 分析探针转基因的时候,一个探针对应的多个基因的情况
  • 机器学习-逻辑回归-考试预测通过-1
  • 计算机中用8位如何计算最大值和最小值-128~127
  • PyTorch 神经网络工具箱完全指南
  • docker一键安装部署若依Ruoyi-Vue(保姆级)
  • 通义DeepResearch论文六连发全面解读
  • 大模型应用-prompt提示词工程
  • Windows 命令行:使用路径名和文件名来启动文件
  • 稻瘟病监测仪的功能用途
  • 仿照豆包实现 Prompt 变量模板输入框
  • 如何安装 SQLPro Studio for Mac?v2024.21.dmg 文件安装步骤详解(附安装包)
  • 扣子空间:字节跳动推出的AI Agent 智能体平台