Django项目配置日志
需求
在Django
项目中实现控制台输出到日志文件,并且设置固定的大小以及当超过指定大小后覆盖最早的信息。
系统日志
使用Django自带的配置,可以自动记录Django的系统日志。
可以使用logging
模块来配置。下面是一个完整的示例代码,展示了如何在Django
的settings.py
文件中配置日志记录。
确保在INSTALLED_APPS
中包含了logging.config
。
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 配置日志'logging.config',
]
在settings.py
中添加以下日志配置:
# 添加LOGGING配置
LOGGING = {'version': 1,'disable_existing_loggers': False,'formatters': {'verbose': {'format': '{levelname} {asctime} {module} {lineno} {process:d} {thread:d} {message}','style': '{',},'simple': {'format': '{levelname} {message}','style': '{',},},'handlers': {# 控制台输出'console': {'level': 'DEBUG','class': 'logging.StreamHandler','formatter': 'simple'},# 文件日志输出'file': {'level': 'INFO','class': 'logging.handlers.RotatingFileHandler','filename': os.path.join(BASE_DIR, 'django.log'),'maxBytes': 1024 * 1024 * 5, # 最大文件大小为5MB'backupCount': 5, # 保留5个备份文件'formatter': 'verbose'},},'loggers': {'django': {'handlers': ['console', 'file'],'level': 'INFO',},},
}
在这个配置中:
handlers
部分定义了两种处理方式:控制台输出和文件输出。文件输出使用了RotatingFileHandler
类,它可以限制日志文件的大小,并在达到最大值时自动创建新的日志文件,同时保留一定数量的旧日志文件。
formatters
部分定义了日志消息的格式。
loggers
部分指定了哪些日志应该被记录,以及它们使用的处理方式和级别。
此配置使得Django
能够同时向控制台和指定的日志文件输出信息,日志文件的最大大小被限制为5MB,并且最多保留5个备份文件。当日志文件大小超过设定值时,最早的日志会被新日志覆盖。
formatter
可选择的输出格式见looging的官方文档。
实测结果
控制台输出
INFO "POST /login/ HTTP/1.1" 302 0
INFO:django.server:"POST /login/ HTTP/1.1" 302 0
INFO "GET /index/ HTTP/1.1" 200 5510
INFO:django.server:"GET /index/ HTTP/1.1" 200 5510
文件输出
INFO 2024-09-26 15:36:11,223 basehttp 124 26760 32436 "GET / HTTP/1.1" 200 5510
INFO 2024-09-26 15:36:11,238 basehttp 124 26760 15316 "GET /static/js/bootstrap.min.js HTTP/1.1" 200 37045
INFO 2024-09-26 15:36:11,239 basehttp 124 26760 23132 "GET /static/css/bootstrap.min.css HTTP/1.1" 200 121200
INFO 2024-09-26 15:36:11,239 basehttp 124 26760 23012 "GET /static/js/jquery.min.js HTTP/1.1" 200 84284
自定义日志
自定义一个类。
自定义类
import logging
from logging.handlers import RotatingFileHandlerclass MyLogging(logging.Logger):def __init__(self, name="mylog", level="DEBUG", file=None,fmt="%(asctime)s %(name)s %(filename)s [%(lineno)d] %(levelname)s:%(message)s"):# 直接超继承Logger中的namesuper().__init__(name)# 配置日志级别self.setLevel(level)# 初始化格式formatter = logging.Formatter(fmt)# 初始化处理器# 如果file为空,执行stream_handler, 不空,都执行# 自定义日志写入文件if file:# 创建日志记录器,指明日志保存路径,每个日志文件的最大值,保存的日志文件的个数上限。# file_handler = logging.FileHandler(file)file_handler = RotatingFileHandler(file, maxBytes=1024 * 1024, backupCount=5)# 设置handler级别file_handler.setLevel(level)# 添加handlerself.addHandler(file_handler)# 添加日志处理器file_handler.setFormatter(formatter)# 自定义日志在后台Console中打印stream_handler = logging.StreamHandler()stream_handler.setLevel(level)self.addHandler(stream_handler)stream_handler.setFormatter(formatter)if __name__ == "__main__":logger = MyLogging(file='./log.txt')logger.debug('hello world')logger.info('welcome to use logging')
在settings.py
中实例化
from static.utils.my_logging import MyLogging
# 启用日志文件
logger = MyLogging(file=os.path.join(BASE_DIR, 'sys_log.txt'))
实测结果
相关文章:

Django项目配置日志
需求 在Django项目中实现控制台输出到日志文件,并且设置固定的大小以及当超过指定大小后覆盖最早的信息。 系统日志 使用Django自带的配置,可以自动记录Django的系统日志。 可以使用logging模块来配置。下面是一个完整的示例代码,展示了如…...

在IntelliJ IDEA中设置文件自动定位
当然,以下是一个整理成博客格式的内容,关于如何在IntelliJ IDEA中设置文件自动定位功能。 在IntelliJ IDEA中设置文件自动定位 背景 最近由于公司项目开发的需求,我从VSCode转到了IntelliJ IDEA。虽然IDEA提供了许多强大的功能,…...

机器学习笔记 - week6 -(十一、机器学习系统的设计)
11.1 首先要做什么 在接下来的视频中,我将谈到机器学习系统的设计。这些视频将谈及在设计复杂的机器学习系统时,你将遇到的主要问题。同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议。下面的课程的的数学性可能不是那么强…...

对c语言中的指针进行深入全面的解析
1.普通的指针: 实际上指针就是存放地址的变量,eg: int a10; int *p&a; 拆分一下int *中的*说明p是一个指针,int是它所指向的类型; 2.字符串指针和字符串数组 char*str1"abcd"; 先看这一个,这个就是一个字符串…...

xxl-job 适配达梦数据库
前言 在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越…...

Linux 配置与管理 SWAP(虚拟内存)
Linux 配置与管理 SWAP(虚拟内存) 一、作用二、创建交换文件(以创建一个2GB的交换文件为例)1. 创建交换文件2. 设置文件权限2.1. **关于 sudo chmod 600 /root/swapfile 是否一定要执行**2.2. **关于其他用户启动是否没权限用到交换分区** 3.…...

yolo自动化项目实例解析(七)自建UI--工具栏选项
在上一章我们基本实现了关于预览窗口的显示,现在我们主要完善一下工具栏菜单按键 一、添加工具栏ui 1、配置文件读取 我们后面要改的东西越来越多了,先加个变量文件方便我们后面调用 下面我们使用的config.get意思是从./datas/setting.ini文件中读取关键…...

贝锐洋葱头浏览器随时随地访问教务系统,轻松搞定选课
教育网的“拥堵”早已是老生常谈,学生数量庞大、上网时间集中、带宽有限,导致网络速度慢。尤其是从外部网络访问教育网时,更是因为跨运营商的缘故变得缓慢。 而学校内网也是类似的情况,课余时间和上课时间的网络使用情况差别巨大…...

django drf to_internal_value
使用场景 用于将接收到的输入转换为内部可用的数据形式; 例子 to_internal_value主要在反序列化时用到,其作用处理API请求携带的数据,对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据,比…...

map(lambda x: x[0], sorted(count.items(), key=lambda x: (-x[1], x[0]))[:n])
被解析的代码行 map(lambda x: x[0], sorted(count.items(), keylambda x: (-x[1], x[0]))[:n])假设的输入 假设我们有以下的 count 字典,其中包括一些字符串及其对应的计数: count {apple: 3,banana: 1,orange: 2,grape: 2 }1. count.items() 首先…...

灰度重心法求取图像重心
1 概述 灰度重心法(Gray-scale Center of Mass Method)是一种在图像处理和计算机视觉中常用的方法。这种方法主要用于确定图像中物体的质心或重心位置,特别是在灰度图像中。 灰度重心法的基本思想是,根据图像中每个像素的灰度值及其位置信息来计算一个加权重心,这个重心…...

Go Mail设置指南:如何提升发送邮件效率?
Go Mail使用技巧与配置教程?如何用Go Mail实现发信? 随着工作负载的增加,如何高效地发送和管理邮件成为了许多职场人士面临的挑战。AokSend将为您提供一份详细的Go Mail设置指南,帮助您提升发送邮件的效率,让您的邮件…...

kali的tplmap使用报错解决
问题 当我们直接使用kali下的tplmap时报错了。 Tplmap 0.5 Automatic Server-Side Template Injection Detection and Exploitation Tool Testing if GET parameter name is injectable Exiting: module collections has no attribute Mapping 这是因为tplmap要求的版本…...

DAY16||513.找树左下角的值 |路径总和|从中序与后序遍历序列构造二叉树
513.找树左下角的值 题目:513. 找树左下角的值 - 力扣(LeetCode) 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: […...

使用jQuery处理Ajax
使用jQuery处理Ajax HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 所有的WWW文件都必须遵守这个标准 一次HTTP操作称为一个事务&am…...

uni-app App版本更新
效果图: 前言 在移动应用开发中,确保用户能够及时更新到最新版本是非常重要的。本文将介绍如何在 uni-app 中实现 App 整包更新功能,并提供相关代码示例以帮助理解。 代码实现 2.1 引入模块 首先,我们需要引入用于处理更新的模块…...

Python Web 与低代码/无代码平台的深度融合
Python Web 与低代码/无代码平台的深度融合 目录 🚀 低代码与无代码平台的兴起🔗 Python 与低代码平台集成🌐 低代码开发的最佳实践📊 数据集成与自动化 1. 🚀 低代码与无代码平台的兴起 低代码和无代码平台的出现&…...

js 如何监听 body 内容是否改变
如果您想监听body内容的变化,并作出响应,可以使用MutationObserver。以下是一个简单的例子,它会在body内容变化时在控制台输出一条消息: // 创建一个观察者对象 const observer new MutationObserver(function(mutations, obser…...

python: 数字类型的一些函数
len(str) round(x, d) 对x进行四舍五入保留小数点后d位 round(3.45,1) 即 3.5 pow(x, y) # x的y次幂. x ** y pow(x, y[,z]) # 幂余 ( x ** y) % z print(pow(3, pow(3, 99), 10000)) #4587 浮点数…...

MapReduce学习与理解
MapReduce为google分布式三驾马车之一。分别为《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。三遍论文奠定了分布式存储和计算的基础。本篇文章来说说mapreduc…...

Animal objDog = new Dog()和 Dog objDog = new Dog()的区别
文章目录 1、Animal objDog new Dog()和 Dog objDog new Dog()的区别1. **对象类型(引用类型)**2. **调用和可用成员**3. **示例代码来说明**使用示例总结 2、Animal objDog new Dog();不能调用dog的方法和属性是为什么?原因解析解决方法小…...

springboot引入netty
配置类 import cn.hutool.core.thread.ThreadUtil; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.PooledByteBufAllocator; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChanne…...

PWM基础与信号控制
1. 什么是PWM? PWM(Pulse Width Modulation,脉宽调制)是一种通过改变信号的占空比来控制电压输出的技术。简单来说,PWM信号由一系列高低电平组成,通过调节高电平持续的时间比例,可以控制信号的…...

nvm,一款nodejs版本管理工具
背景 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为…...

数据处理与统计分析篇-day11-RFM模型案例
会员价值度模型介绍 会员价值度用来评估用户的价值情况,是区分会员价值的重要模型和参考依据,也是衡量不同营销效果的关键指标之一。 价值度模型一般基于交易行为产生,衡量的是有实体转化价值的行为。常用的价值度模型是RFM RFM模型是根据…...

【PostgreSQL】PostgreSQL数据库允许其他IP连接到数据库(Windows Linux)
要让PostgreSQL数据库允许其他IP连接到数据库,需要进行以下几个步骤的配置: 1. 修改postgresql.conf文件 首先,需要修改PostgreSQL的主配置文件postgresql.conf,允许数据库监听所有IP的连接请求。 1.1 找到postgresql.conf文件…...

通义千问:让我的编程工作效率翻倍的秘密武器
在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。在这篇博客中,我将分享一个让我工作效率翻倍的编程工具——通义千问大…...

2.Seata 1.5.2 集成Springcloud-alibaba
一.Seata-server搭建已完成前提下 详见 Seata-server搭建 二.Springcloud 项目集成Seata 项目整体测试业务逻辑是创建订单后(为了演示分布式事务,不做前置库存校验),再去扣减库存。库存不够的时候,创建的订单信息数…...

python 图像绘制问题: 使用turtle库绘制蟒蛇
turtle (海龟)库是turtle绘图体系的python实现。 1969年诞生,主要用于程序设计入门。 import turtle turtle.setup(650, 350, 200, 200) # 设置窗体(宽,高,窗体左上角x坐标,y坐标) turtl…...

大模型分布式训练并行技术(七)-自动并行
近年来,随着Transformer、MOE架构的提出,使得深度学习模型轻松突破上万亿规模参数,传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此,我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&a…...