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

Django中的日志处理

日志处理

1.日志级别

级别(Level)表示日志消息的优先级,从低到高分为以下几个级别:
DEBUG: 详细的日志信息,通常用于调试。
INFO: 一般的信息性消息,用于说明程序运行情况。
WARNING: 警告消息,表明可能出现问题,但程序仍然可以继续运行。
ERROR: 错误消息,表明出现了一个严重的问题,程序可能无法继续正常运行。
CRITICAL: 严重错误消息,通常表示程序无法继续执行。

通过设置 level,你可以控制只有达到指定级别或更高级别的日志消息才会被处理。
例如,如果将 level 设置为 INFO,那么所有 INFO、WARNING、ERROR 和 CRITICAL 级别的日志消息都会被处理,而 DEBUG 级别的消息将被忽略。

2.propagate消息传播

如果 propagate 被设置为 True,那么日志消息将会传递给父级 logger。如果设置为 False,则不会传递给父级 logger。见下示例 settings.py

3.Django 内置的 logger

django 获取所有日志
django.server 用于记录 Django 开发服务器的日志消息,例如 HTTP 请求、响应、静态文件服务等
django.request 处理与请求相关的日志,5xx 响应报出 error 日志,4xx 报出 warning 日志
django.db.backends 处理与数据库之间交互的日志
django.security.* 处理与安全相关的日志
django.db.backends.schemea 处理数据库迁移时的日志

import logging
获取Django内置的logger
logger = logging.getLogger('django')
记录不同级别的日志消息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
  • settings.py:
LOG_PATH = BASE_DIR / "logs"if not os.path.exists(LOG_PATH):os.mkdir(LOG_PATH)# 日志配置
LOGGING = {"version": 1,"disable_existing_loggers": False, # 为True表示会打印Django源码中内置的日志"formatters": {  #  定义日志的显示格式# 日志格式"standard": {"format": "%(asctime)s [%(levelname)s] %(filename)s::%(funcName)s:%(lineno)d: %(message)s"},"simple": {"format": "%(levelname)s %(message)s"},  # 简单格式},# 过滤"filters": {},# 配置用哪几种 handlers 来处理日志"handlers": {"request": {"level": "INFO",  # level表示只有达到指定级别或更高级别的日志消息才会被处理。"class": "logging.handlers.RotatingFileHandler","filename": LOG_PATH / f'request-{time.strftime("%Y-%m-%d")}.log',  # 日志文件名,包含日期"maxBytes": 1024 * 1024 * 5,  # 单个日志文件大小为 5 MB"backupCount": 5,  # 最多保留 5 个备份文件"formatter": "simple",   # 使用 'simple' 格式化器"encoding": "utf-8",  # 设置默认编码},"db": {"level": "DEBUG","class": "logging.handlers.RotatingFileHandler","filename": LOG_PATH / f'db-{time.strftime("%Y-%m-%d")}.log',"maxBytes": 1024 * 1024 * 5,  # 文件大小"backupCount": 5,  # 备份数"formatter": "simple",  # 输出格式"encoding": "utf-8",  # 设置默认编码},"file": {"level": "ERROR","class": "logging.handlers.RotatingFileHandler","filename": LOG_PATH / f'file-{time.strftime("%Y-%m-%d")}.log',"maxBytes": 1024 * 1024 * 5,  # 文件大小"backupCount": 5,  # 备份数"formatter": "simple",  # 输出格式"encoding": "utf-8",  # 设置默认编码},# 控制台输出"console": {"level": "DEBUG","class": "logging.StreamHandler","formatter": "standard",},},# 定义具体处理日志的方式"loggers": {"root": {"level": "ERROR",  # level表示只有达到指定级别或更高级别的日志消息才会被处理。"handlers": ["file"],  # handlers可以写多个},"django": {"level": "INFO","handlers": ["request"],"propagate": True,},# django.request一般处理warning及更高级别的日志,# 好像没有上面django的时候,才会处理一般的请求:debug或者info"django.request": {"level": "DEBUG","handlers": ["console"],"propagate": False,},# 对于django.db.backends 如果propagate=True,会传递到上一级django.db,# 如果django.db中propagate=True,还会再传递到django,依次类推会传递到最高级root中..."django.db": {"level": "DEBUG","handlers": ["console"],"propagate": True,},"django.db.backends": {"level": "DEBUG","handlers": ["db"],"propagate": True,},},
}
  • View.py:
import logginglogger = logging.getLogger("django")class BookListAPIView(APIView):# 局部认证# authentication_classes = [JWTAuthentication]def get(self, request):logger.info("打印info级别的日志")logger.error("打印error级别的日志")book = BookInfo.objects.all()serializer = BookModelSerializer(instance=book, many=True)return Response(serializer.data)

相关文章:

Django中的日志处理

日志处理 1.日志级别 级别(Level)表示日志消息的优先级,从低到高分为以下几个级别: DEBUG: 详细的日志信息,通常用于调试。 INFO: 一般的信息性消息,用于说明程序运行情况。 WARNING: 警告消息&#xff0…...

FonePaw Data Recovery for Mac:轻松恢复丢失数据

FonePaw Data Recovery for Mac是一款功能强大的数据恢复软件,专为Mac用户设计,帮助用户轻松恢复因各种原因丢失的数据。该软件支持从硬盘驱动器、存储卡、闪存驱动器等存储介质中恢复丢失或删除的文件,包括照片、视频、文档、电子邮件、音频…...

C语言易错提醒选择题精选

Ⅰ 易错题 1.设有double p;&#xff0c;为变量p声明一个引用名称rp,则定义语句为 double& rpp; 2.已知‘A’一‘Z’的ASCII码为65—90&#xff0c;当执行“char ch14*52&#xff1b;cout<<ch<<endl;”语句序列后得到的输出结H &#xff0c;72对应ASCII码中…...

Android11系统去掉截屏功能

1. 去掉Settings里截屏菜单条目&#xff0c;packages/apps/Settings&#xff1a; diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml old mode 100644 new mode 100755 index a5e4d06..a9420bb --- a/res/xml/top_level_settings.xmlb/res/xml/t…...

测试驱动来学习 Promise

基础功能 测试案例&#xff1a;以同步的方式调用。 /*** v1: 基础功能*/ const p1 new MyPromise((resolve, reject) > {resolve(success)reject(error) })p1.then((value) > {console.log(v1: , value) }) 实现功能&#xff1a;在 status 和 value 的位置暂存值&…...

Vue3实战笔记(20)—封装头部导航组件

文章目录 前言一、封装头部导航栏二、使用步骤总结 前言 Vue 3 封装头部导航栏有助于提高代码复用性、统一风格、降低维护成本、提高可配置性和模块化程度&#xff0c;同时还可以实现动态渲染等功能&#xff0c;有利于项目开发和维护。 一、封装头部导航栏 封装头部导航栏&am…...

Yolov8目标检测——在Android上部署Yolov8 tflite模型

1. 简介 YOLOv8 是一种用于目标检测的深度学习模型&#xff0c;它是 YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本之一。YOLO 系列因其高效和准确性而在计算机视觉领域非常受欢迎&#xff0c;特别是在需要实时目标检测的应用中&#xff0c;如视频监控、自动…...

(delphi11最新学习资料) Object Pascal 学习笔记---第12章操作类(类方法和类数据)

第12章 操作类 ​ 在过去的几章中&#xff0c;你已经了解了 Object Pascal 语言面向对象的基础&#xff1a;类、对象、方法、构造函数、继承、后期绑定、接口等等。现在&#xff0c;我们需要进一步了解与类管理相关的一些更高级、更具体的语言特性。从类引用到类助手(class he…...

面向 C# 开发人员的电子邮件转换控件 - EML 到 PNG

本文将使 C# 开发人员能够以编程方式将EML或MSG转换为其他流行的文件格式。Aspose.Email 提供了类和方法以及在线 电子邮件转换器工具&#xff0c;可将 EML无缝转换为PNG 。如果不安装第三方软件&#xff0c;则无法打开 EML/MSG 文件。因此&#xff0c;将 EML/MSG 转换为 PNG 和…...

Vue3:数据交互axios

回调函数 > 回调函数: 一些特殊的函数,表示未来才会执行的一些功能,后续代码不会等待该函数执行完毕就开始执行了 1. Promise 1.1 简介 > 前端中的异步编程技术&#xff0c;类似Java中的多线程线程结果回调&#xff01; * Promise 是异步编程的一种解决方案&#xff0c…...

芯片的性能指什么

【省带宽、压成本专题】降低30%视频码率&#xff0c;深挖“窄带高清”的实现原理 - 知乎 芯片&#xff08;或微处理器、集成电路&#xff09;的性能主要指其完成特定任务的能力和效率。性能可以通过多种参数来衡量&#xff0c;这些参数反映了芯片设计的不同方面&#xff0c;包…...

Java通过百度地图API获取定位-普通IP定位

项目中有一个登录邮箱提醒的功能&#xff0c;需要根据IP地址获取定位信息&#xff0c;从而更好地提示用户账号登录的所在地。为此&#xff0c;花费了一些时间来实现这个功能。 在CSDN搜索了一下&#xff0c;发现关于获取定位的文章说明都不够详细&#xff0c;于是决定自己创作一…...

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息…...

【计算机网络】Socket网络编程

&#x1f4bb;文章目录 &#x1f4c4;前言Socket编程基础概念工作原理 Socket API介绍socket函数绑定、监听函数accept、connect接受/发送函数 Socket API的应用Socket类与其派生类的设计服务器与客户端的设计使用 &#x1f4d3;总结 &#x1f4c4;前言 现今我们的日常生活当中…...

Ansible自动运维工具之playbook

目录 一.inventory主机清单 1.定义 2.变量 &#xff08;1&#xff09;主机变量 &#xff08;2&#xff09;组变量 &#xff08;3&#xff09;组嵌套 二.playbook基本内容 1.组成 &#xff08;1&#xff09;Tasks: 任务&#xff0c;即调用模块完成的某操作 &#xff0…...

【启明智显技术分享】SSD201/SSD202D核心板UI界面开发全攻略:LVGL使用指南

提示&#xff1a;作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴及sigmastar&#xff08;厦门星宸&#xff09;VAD合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…...

数据可视化(九):Pandas北京租房数据分析——房源特征绘图、箱线图、动态可视化等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…...

ADOP带你了解:跳线与交叉电缆有何不同?

如果您想将设备连接到互联网&#xff0c;您可能想知道要使用的正确电缆。跳线和交叉电缆都是类型的以太网电缆&#xff0c;可帮助连接计算机、调制解调器、路由器和交换机等设备。那么&#xff0c;跳线和交叉电缆有什么区别呢&#xff1f;让我们讨论这两种类型的电缆&#xff0…...

Django 和 Spring Boot

标题 Django (Python)Django提供的组件Django 的处理逻辑 Spring Boot (Java)Spring Boot 的特点Spring Boot 的处理逻辑 MVC设计模式模型&#xff08;Model&#xff09;视图&#xff08;View&#xff09;控制器&#xff08;Controller&#xff09;逻辑处理过程 Django 和 Spri…...

上位机图像处理和嵌入式模块部署(树莓派4b的替代品)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 实话实说&#xff0c;树莓派4b的产品力还是比较优秀的&#xff0c;价格还算适中。但是和国产卡片电脑比起来&#xff0c;则逊色不少。功能差不多的…...

深入理解ThreadLocal:为什么Entry的Key必须是弱引用?

前言 ThreadLocal是Java并发编程中一个非常重要的工具类&#xff0c;它能为每个线程维护独立的变量副本。但很多开发者对它的理解停留在“每个线程有自己的变量副本”这个层面&#xff0c;对于其内部实现细节&#xff0c;尤其是Entry的Key为什么设计成弱引用&#xff0c;往往一…...

基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.7】

3.5 XML和R的实践现在让我们转到实际例子。XML文件在R会话中如何查看、如何导入、如何访问&#xff0c;以及如何把来自XML文档的信息转化为更便于进一步图形化或统计化分析的数据结构&#xff0c;例如常规的数据框&#xff08;data frame&#xff09;呢&#xff1f;正如我们前面…...

配置嵌入式Linux系统从NFS启动

配置嵌入式Linux系统从NFS启动 嵌入式Linux开发时&#xff0c;需要频繁将开发的程序下载到嵌入式电路板上运行&#xff0c;尽管采用各种文件传输工具能比较方便的再宿主机和开发电路板之间进行文件传输&#xff0c;但每次操作需要操作略显繁琐。此处记录在开发中经常使用到的嵌…...

三方三层的主从博弈能源系统优化模型,粒子群算法求解研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

AI赋能开发:让快马智能生成telnet会话录制与自动化回放测试工具

最近在做一个网络设备的自动化测试项目&#xff0c;需要频繁通过telnet进行配置验证。传统的手工测试效率太低&#xff0c;于是尝试用AI辅助开发一个智能化的telnet会话录制与回放工具。整个过程在InsCode(快马)平台上完成&#xff0c;体验非常流畅。 需求分析 首先明确工具需要…...

SAMD平台轻量级事件驱动按钮库slight_ButtonInput

1. 项目概述 slight_ButtonInput 是一个面向嵌入式平台&#xff08; 仅限 SAMD 系列微控制器 &#xff0c;如 ATSAMD21G18、ATSAMD51J19 等&#xff09;的轻量级 Arduino 库&#xff0c;专为 事件驱动型按钮输入处理 而设计。其核心目标并非简单轮询引脚电平&#xff0c;…...

从测试到ISP调试:一名Camera Tuning工程师的四年转型与面试通关实录

1. 从测试到ISP调试&#xff1a;我的四年转型之路 四年前刚毕业时&#xff0c;我加入上海一家网络摄像头方案公司&#xff0c;最初做的是最基础的测试工作。每天重复着枯燥的测试用例执行、bug记录和报告撰写&#xff0c;一度怀疑自己是不是选错了职业方向。转折点出现在工作两…...

Blender USDZ插件架构重构:实现99.9%AR模型兼容性与300%导出性能提升

Blender USDZ插件架构重构&#xff1a;实现99.9%AR模型兼容性与300%导出性能提升 【免费下载链接】BlenderUSDZ Simple USDZ file exporter plugin for Blender3D 项目地址: https://gitcode.com/gh_mirrors/bl/BlenderUSDZ 在AR内容创作领域&#xff0c;技术团队常面临…...

Win10/Win11远程桌面报错‘函数不受支持’?5分钟搞定CredSSP加密Oracle修正

Win10/Win11远程桌面报错‘函数不受支持’&#xff1f;5分钟急救指南 刚准备远程处理工作文件&#xff0c;突然跳出"发生身份验证错误&#xff0c;要求的函数不受支持"的红色警告框——这个场景对需要频繁使用远程桌面的职场人来说简直噩梦。上周我就遇到了同样问题&…...

宝塔面板安全加固全攻略:从密码重置到IP白名单配置(附常见问题解决)

宝塔面板安全加固全攻略&#xff1a;从密码重置到IP白名单配置&#xff08;附常见问题解决&#xff09; 在公网环境下&#xff0c;服务器安全防护是每个运维人员的必修课。作为国内最受欢迎的服务器管理面板之一&#xff0c;宝塔面板的便捷性与其潜在的安全风险并存。本文将系统…...