Django中的日志处理

news/2024/5/21 5:01:57

日志处理

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)

http://www.mrgr.cn/p/45467365

相关文章

信息安全技术-分析题【太原理工大学】

没有历年题或明确说明大题会考什么,以下为个人猜测 简答题和选择判断占60,认真看题库和总结,能过d(^_^o) 好像说是加解密这类题会给公式让你直接套,但还是看一下基本原理,要不到时候蒙圈 1.加密算法步骤 图 1 是一个采…

基于Springboot+Vue的Java项目-车辆管理系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

企业数据保护,从严防内部信息泄露开始

在当今的数字化时代,数据已成为企业最宝贵的资产之一。然而,随之而来的是数据安全威胁,尤其是内部信息泄露,这不仅会导致企业面临巨大的经济损失,还可能损害企业的品牌形象和客户信任。因此,从严防内部信息泄露开始,成为企业数据保护策略中的重要一环。确立内部数据分类…

实验四--代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

回溯法、全排列、子集等

回溯法 感想:回溯算法本质是一个循环,有点像while循环 一些回溯法(递归)的经典应用 1.全排列 2.子集 其实上面两个点,也是对应着高中数学里面的“排列”与“组合” 1.全排列问题 给定一个集合S{a,b,c}&#xff0…

选择排序桌面检查

码云代码:https://gitee.com/yibo886/codes/0ihau3t9pj6bkfqzxcmnl93 博客园: 一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容…

tomcat打开乱码修改端口

将UTF-8改成GBK 如果端口冲突,需要修改tomcat的端口

更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 再谈端口号 端口号的返回…

docker的一些命令 以及dockerFile语法

文件夹重新命名mv node-v14.18.1-linux-x64 node-v14.18.1 dokcer 命令 将linux的文件复制到docker容器里面 docker cp /usr/local/node-v14.18.1/ 8ec26052dfad:/usr/local/node-v14.18.1 将docker容器里面的文件复制到linux docker container cp ng…

代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

知识点 1、PHP审计-动态调试-变量覆盖 2、PHP审计-动态调试-原生反序列化 3、PHP审计-动态调试-框架反序列化PHP常见漏洞关键字 SQL注入: select insert update delete mysql_query mysqli等 文件上传: $_FILES,type"file"&…

实验四:代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

代码审查

一、实验题目 :代码审查 二、实验目的熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查;根据代码规范制定代码走查表,并按所制定的审查规范互审代码。三、实验内容 PyCharm环境预先准备在PyCharm环境下实现对输入的n个整数进行排序的代码;利用Code Inspe…

炒美股怎么开户?

近年来,随着国内投资者对境外投资需求的不断增长,炒美股逐渐成为许多投资者的选择。然而,随着监管政策的不断完善,传统的互联网券商开户方式已经不再适用。那么,对于想要入场美股市场的投资者来说,该如何开…

实验四—代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

从0到1构建AI agent【零代码】

一、前言 想象一下,如果AI的想象力被彻底释放,那将是一场怎样的革命?“大语言模型不过是个贪吃蛇,而AI Agent却能创造出‘王者荣耀’。”这不仅是网上的一句戏言,它预示着一个不可逆转的趋势。比尔盖茨更是一语中的&am…

Maven多模块工程提示其它模块依赖找不到(明明已经添加)

查看有没有重复标记文件夹!!!(我的就是这样)

Html转C#/JSP代码工具

Html转C#/JSP代码工具为您提供在线Html转换为Jsp和C#代码,Jsp代码,Html转C#,Html转.Net,Html转Jsp,在线Html转Jsp代码,HTML与JSP和C#,.Net代码在线转换,使用这个Html在线转换工具,能得到拼接好代码等 免费工具地址:http://tools.linuxsou.com/html2php/ 千行代码,Bug何处藏。…

数据仓库实验三:分类规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、决策树分类规则挖掘(1)新建一个 Analysis Services 项目 jueceshu(2)建立数据源视图(3)建立挖掘结构 DST.dmm(4&#xff…

cap和base分布式理论

一、分布式理论 1.CAP理论 CAP理论是说对于分布式数据存储,最多只能同时满足一致性(C,Consistency)、可用性(A, Availability)、分区容忍性(P,Partition Tolerance&…

JVM的垃圾回收机制(GC机制)

在Java代码运行的过程中,JVM发现 某些资源不需要再使用的时候,就会自动把资源所占的内存给回收掉,就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”,“垃圾回收机制”也称"GC机制"。 对于Java代码…