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

Django中配置日志

在Django中配置日志的方法非常简单,只需要在 setting 文件中添加配置项,系统会自动生成相应的日志文件,也可以配置调试时显示内容,报错发送邮件等操作。

在setting.py中添加以下配置。

# 日志配置
LOGS_DIRS = os.path.join(BASE_DIR, 'logs','django')
if not os.path.exists(LOGS_DIRS):os.makedirs(LOGS_DIRS)SPIDER_LOGS_DIRS = os.path.join(BASE_DIR, 'logs','spider')
if not os.path.exists(SPIDER_LOGS_DIRS):os.makedirs(SPIDER_LOGS_DIRS)LOGGING = {'version': 1,  # 使用的日志模块的版本,目前官方提供的只有版本1,但是官方有可能会升级,为了避免升级出现的版本问题,所以这里固定为1'disable_existing_loggers': False,  # 是否禁用其他的已经存在的日志功能?肯定不能,有可能有些第三方模块在调用,所以禁用了以后,第三方模块无法捕获自身出现的异常了。'formatters': {  # 日志格式设置,verbose或者simple都是自定义的'verbose': {  # 详细格式,适合用于开发人员不在场的情况下的日志记录。# levelname 日志等级# asctime   发生时间# module    文件名# process   进程ID# thread    线程ID# message   异常信息'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}','style': '{',  # 变量格式分隔符},'spiderformat': {  # 详细格式,适合用于开发人员不在场的情况下的日志记录。'format': '{levelname} {asctime} {message}','style': '{',},'simple': {  # 简单格式,适合用于开发人员在场的情况下的终端输出'format': '{levelname} {message}','style': '{',},'standard': {'format': '%(levelname)s %(asctime)s %(pathname)s %(filename)s %(module)s %(funcName)s %(lineno)d: %(message)s'},  # 对日志信息进行格式化,每个字段对应了日志格式中的一个字段,更多字段参考官网文档,我认为这些字段比较合适,输出类似于下面的内容},'filters': {  # 过滤器'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue',},},'handlers': {  # 日志处理流程,console或者mail_admins都是自定义的。'console': {'level': 'DEBUG',  # 设置当前日志处理流程中的日志最低等级'filters': ['require_debug_true'],  # 当前日志处理流程的日志过滤'class': 'logging.StreamHandler',  # 当前日志处理流程的核心类,StreamHandler可以帮我们把日志信息输出到终端下'formatter': 'simple'  # 当前日志处理流程的日志格式},# 'mail_admins': {#     'level': 'ERROR',                  # 设置当前日志处理流程中的日志最低等级#     'class': 'django.utils.log.AdminEmailHandler',  # AdminEmailHandler可以帮我们把日志信息输出到管理员邮箱中。#     'filters': ['special']             # 当前日志处理流程的日志过滤# }'file': {'level': 'WARNING','class': 'logging.handlers.TimedRotatingFileHandler',# 日志位置,日志文件名,日志保存目录logs必须手动创建'filename': '%s/django.log' % LOGS_DIRS,# TimedRotatingFileHandler的参数# 目前设定每天一个日志文件# 'S'         |  秒# 'M'         |  分# 'H'         |  时# 'D'         |  天# 'W0'-'W6'   |  周一至周日# 'midnight'  |  每天的凌晨'when': 'D',  # 间间隔的类型,指定秒就不要在Windows上运行测试'interval': 1,  # 时间间隔'backupCount': 5,  # 能留几个日志文件;过数量就会丢弃掉老的日志文件'encoding': 'utf-8',  # 日志文本编码'formatter': 'verbose'  # 当前日志处理流程的日志格式},'spiderfile': {'level': 'INFO','class': 'logging.handlers.TimedRotatingFileHandler','filename': '%s/spider.log' % SPIDER_LOGS_DIRS,'when': 'H',  # 间间隔的类型,指定秒就不要在Windows上运行测试'interval': 1,  # 时间间隔'backupCount': 90,  # 能留几个日志文件;过数量就会丢弃掉老的日志文件'encoding': 'utf-8',  # 日志文本编码'formatter': 'spiderformat'  # 当前日志处理流程的日志格式},},'loggers': {  # 日志处理的命名空间'django': {'handlers': ['console', 'file'],  # 当基于django命名空间写入日志时,调用那几个日志处理流程'propagate': True,  # 是否在django命名空间对应的日志处理流程结束以后,冒泡通知其他的日志功能。True表示允许},'spider': {'level': 'INFO','handlers': ['console', 'spiderfile'],  # 当基于django命名空间写入日志时,调用那几个日志处理流程'propagate': False,  # 是否在django命名空间对应的日志处理流程结束以后,冒泡通知其他的日志功能。True表示允许},}
}

配置中主要的是以下四个大的配置项。

formatters:日志的格式器,配置日志的打印及写入格式

filters:过滤器、配置需要显示日志的路由

handlers:处理器,配置日志的处理方式,包括:写入文件配置、调试打印配置、发送邮件配置等

loggers:日志处理员(我起的名字),可以配置多个不同的日志处理角色,进行不同的操作。


在文件中使用logger
首先导入logging库,并调用在setting.py中配置的loggers

import logging
splogger = logging.getLogger('spider')

在需要调用日志的地方添加代码

splogger.info("开始同步")
splogger.warning("未打开页面,重新打开")
splogger.error("同步失败")

这个是自动生成的日志文件。

还遇到个问题是正常启动没问题,但是按时间分隔日志文件的时候报错。

启动的时候需要加个参数

python manage.py runserver 0.0.0.0:80

还有个简单的启动方法

在项目根目录下创建一个run.py文件,在里面添加以下代码,每次启动时只需要启动这个文件就可以,没必要每次都输命令。

import osif __name__ == '__main__':os.system('python manage.py runserver 0.0.0.0:80')# os.system('python manage.py runserver 0.0.0.0:80 --noreload')

相关文章:

Django中配置日志

在Django中配置日志的方法非常简单,只需要在 setting 文件中添加配置项,系统会自动生成相应的日志文件,也可以配置调试时显示内容,报错发送邮件等操作。 在setting.py中添加以下配置。 # 日志配置 LOGS_DIRS os.path.join(BASE…...

海外盲盒小程序背后的技术支撑与实现

海外盲盒小程序之所以能够迅速崛起并受到全球消费者的喜爱,除了其独特的商业模式和营销策略外,更重要的是其背后的技术支撑和实现。本文将深入探讨海外盲盒小程序背后的技术支撑及其实现方式。 一、多语言与本地化技术 为了满足全球不同地区消费者的需…...

vue问题记录

vue3 路由跳转携带参数 路由跳转携带参数 query方法 //跳转传参 this.$router.push({path:/home,query: {id:1}}) //接受参数 this.$route.query.id问题:刷新页面,参数会丢失—未解决 将参数存在本地存储中,但是组件销毁时,清…...

Flutter - Material3适配

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 Flutter - Material3适配 对比图具体实现一些组件的变化 代码实现Material2的ThemeDataMaterial3的ThemeData Material3适配官方文档 flutter SDK升级到3.16.0之后 …...

一个有趣的c++案例

1. 源码 #include <stdio.h> #include <stdint.h> #include <iostream>using namespace std;uint8_t a 0; uint8_t b 0;#define MY_LOG#ifdef MY_LOG#define my_log(...) printf(__VA_ARGS__); fflush(stdout)#else #define my_log(...) #endifvoid …...

【python】OpenCV—Background Estimation(15)

文章目录 中值滤波中值滤波得到图像背景移动侦测 学习来自 OpenCV基础&#xff08;14&#xff09;OpenCV在视频中的简单背景估计 中值滤波 中值滤波是一种非线性平滑技术&#xff0c;主要用于数字信号处理&#xff0c;特别是在图像处理中去除噪声。 一、定义与原理 定义&am…...

【Java毕业设计】基于JavaWeb的旅游论坛管理系统

文章目录 摘 要目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 Java编程语言1.4.2 vue技术1.4.3 MySQL数据库1.4.4 B/S结构1.4.5 Spring Boot框架 2 系统需求分析2.1 可行性分析2.2 系统流程2.2.1 操作流程2.2.2 登录流程2.2.3 删除信息…...

讲一下v-model的底层实现原理?

什么是v-model&#xff1f; 在Vue.js中&#xff0c;v-model是一个用于实现双向数据绑定的指令。它通常用于表单控件上&#xff0c;以便能够在视图和数据模型之间自动同步数据。具体来说&#xff0c;当用户在输入框中输入内容时&#xff0c;数据模型会自动更新&#xff1b;当数…...

大模型基础——从零实现一个Transformer(3)

大模型基础——从零实现一个Transformer(1)-CSDN博客 一、前言 之前两篇文章已经讲了Transformer的Embedding,Tokenizer,Attention,Position Encoding, 本文我们继续了解Transformer中剩下的其他组件. 二、归一化 2.1 Layer Normalization layerNorm是针对序列数据提出的一种…...

一二三应用开发平台应用开发示例——概述、应用开发示例简介及创建前后端模块

概述 对于应用开发平台的核心基石——系统管理模块&#xff0c;我精心撰写了一份详尽的说明手册。该手册旨在从使用者的角度出发&#xff0c;不仅全面阐述系统的各项属性和功能&#xff0c;更着重强调使用过程中的注意事项和最佳实践。 在手册的编写过程中&#xff0c;我特别…...

springboot+minio+kkfileview实现文件的在线预览

在原来的文章中已经讲述过springbootminio的开发过程&#xff0c;这里不做讲述。 原文章地址&#xff1a; https://blog.csdn.net/qq_39990869/article/details/131598884?spm1001.2014.3001.5501 如果你的项目只是需要在线预览图片或者视频那么可以使用minio自己的预览地址进…...

HTML5+CSS3小实例:粘性文字的滚动效果

实例:粘性文字的滚动效果 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-sca…...

Java 关于抽象 -- Java 语言的抽象类、接口和函数式接口

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 008 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

用 Notepad++ 写 Java 程序

安装包 百度网盘 提取码&#xff1a;6666 安装步骤 双击安装包开始安装。 安装完成&#xff1a; 配置编码 用 NotePad 写 Java 程序时&#xff0c;需要设置编码。 在 设置&#xff0c;首选项&#xff0c;新建 中进行设置&#xff0c;可以对每一个新建的文件起作用。 Note…...

malloc brk mmap

malloc 是一个库函数&#xff0c;通常在 C 标准库中实现&#xff0c;用于动态内存分配。malloc 的具体实现可能因库、操作系统和平台而异&#xff0c;但通常它会与底层操作系统提供的内存管理功能进行交互。 对于大多数现代操作系统&#xff08;如 Unix、Linux、Windows 等&am…...

java多线程相关概念

在Java多线程编程中&#xff0c;有几个关键的术语需要理解&#xff1a; 1.线程(Thread)&#xff1a;线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。 2.进程(Process)&#xff1a;进程是系统进行资源分配和调度…...

【html】简单网页模板源码

大家每一次在写网页的时候会不会因为布局而困扰今天就给大家带来一个我自己亲自编写的网页的基本的模板大家可以直接去利用&#xff0c;大家也可以利用自己的想法去做空间的美化和完善。 源码&#xff1a; html: <!DOCTYPE html> <html lang"zh"><…...

借助Historian Connector + TDengine,打造工业创新底座

在工业自动化的领域中&#xff0c;数据的采集、存储和分析是实现高效决策和操作的基石。AVEVA Historian (原 Wonderware Historian) 作为领先的工业实时数据库&#xff0c;专注于收集和存储高保真度的历史工艺数据。与此同时&#xff0c;TDengine 作为一款专为时序数据打造的高…...

51单片机-实机演示(LED点阵)

目录 前言: 一.线位置 二.扩展 三.总结 前言: 这是一篇关于51单片机实机LED点阵的插线图和代码说明.另外还有一篇我写的仿真的连接在这:http://t.csdnimg.cn/ZNLCl,欢迎大家的点赞,评论,关注. 一.线位置 接线实机图. 引脚位置注意: 1. *-* P00->RE8 P01->RE7 …...

STM32硬件接口I2C应用(基于MP6050)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 认识MP6050 3.1 MP6050功能介绍 3.2 加速计测量寄存器 ​编辑3.3 温度计量寄存器 3.4 陀螺仪测量寄存器 4 MP60…...

基于JSP的贝儿米幼儿教育管理系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果您对本系统感兴趣或者有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; JSP技术 工具&#xff1a; IDEA/Eclipse、…...

数字化与文化交融,树莓集团助力园区文化升级

树莓集团在产业园运营领域建设了特色空间布局&#xff0c;包括产业实训基地、产业办公中心、业务资源平台、产学研中心、数字资产空间、双创孵化空间、产业实验室和人才项目转化中心等八大板块&#xff0c;共同构建了一个全面而深入的产业支撑体系&#xff0c;为园区文化建设提…...

【原创课程】如何制作安装板

具体步骤如下: 第一步:新建页类型为“安装板布局图(交互式)”并修改页描述为“安装板布局图”。 第二步:新建安装板 第三步:设置图纸上符号元件的部件,双击符号,弹出常规设备窗口,点击部件进行选择 第四步:打开2D安装板导航器,将图纸中的设备拖拽到安装板上 第五步…...

简单聊聊【java.util.Stream】,更新中

public class Main {public static void main(String[] args) {List<Integer> numbers Arrays.asList(1, 2, 3, 4, 5, 6); // 原始容器&#xff1a;java.util.Arrays.ArrayList#ArrayList// 创建一个 Stream&#xff0c;过滤出偶数&#xff0c;并打印它们numbers.str…...

GIS之arcgis系列07:conda环境下安装arcpy环境

首先将python27环境下的“Desktop10.8.pth”拷贝到anaconda环境下。 路径如下&#xff08;仅参考&#xff09;&#xff1a; C:\Python27\ArcGIS10.8\Lib\site-packages\Desktop10.8.pth D:\Anaconda\Lib\site-packages 在anaconda prompt中穿创建一个新环境 conda create -…...

容器运行nslookup提示bash: nslookup: command not found【笔记】

在容器中提示bash: nslookup: command not found&#xff0c;表示容器中没有安装nslookup命令。 可以通过以下命令安装nslookup&#xff1a; 对于基于Debian/Ubuntu的容器&#xff0c;使用以下命令&#xff1a; apt-get update apt-get install -y dnsutils对于基于CentOS/R…...

解析 Spring 框架中的三种 BeanName 生成策略

在 Spring 框架中&#xff0c;定义 Bean 时不一定需要指定名称&#xff0c;Spring 会智能生成默认名称。本文将介绍 Spring 的三种 BeanName 生成器&#xff0c;包括在 XML 配置、Java 注解和组件扫描中使用的情况&#xff0c;并解释它们如何自动创建和管理 Bean 名称。 1. Be…...

细说ARM MCU的串口接收数据的实现过程

目录 一、硬件及工程 1、硬件 2、软件目的 3、创建.ioc工程 二、 代码修改 1、串口初始化函数MX_USART2_UART_Init() &#xff08;1&#xff09;MX_USART2_UART_Init()串口参数初始化函数 &#xff08;2&#xff09;HAL_UART_MspInit()串口功能模块初始化函数 2、串口…...

000-基于sklearn的机器学习入门:工作环境搭建与配置

本专栏将介绍基于Scikit-learn(简称sklearn)的机器学习入门知识。包括但不一定限于&#xff0c;机器学习基本知识、sklearn库简介&#xff0c;基于Sklearn库的机器学习实践。 这是本专栏的第000篇&#xff0c;将介绍如何安装和配置sklearn环境&#xff0c;不仅包括Sklearn库的…...

就业班 第四阶段(k8s) 2401--6.5 day3 Yaml语法解析+钩子函数

Yaml语法解析 今天学的都是在pod里面操作的 格式 这个文件要创建的资源对象是什么 kind: Pod 这个资源对象所在的api版本是什么 apiVersion: v1 元数据 metadata: 对这个pod中的镜像的描述 spec&#xff1a; 字典无序 同一级可以调换顺序 &#xff1a;比如kind和apiVersion …...

wordpress音乐盒/东莞seo网站排名优化公司

1. 流水线实现多周期指令简图2. MIPS流水线基本流程1. 取指令&#xff1b;2. 读寄存器和译码&#xff1b;3. 执行ALU和地址计算&#xff1b;4. 存储器访问&#xff1b;5. 写结果到寄存器。3. 非流水与流水的对比&#xff1a;非流水的执行时间– 3条指令共需3800&#xff1d;240…...

网站建设 开办费/上海公司排名

本人应用PHP开发程序也小有年头了&#xff0c;对于PHP程序也有一些自己的简介&#xff0c;接触了一些国内外优秀的MVC框架&#xff0c;近日&#xff0c;突然想了解一下基本的MVC框架式如何实现的&#xff0c;所以开始着手研究自己动手打造出一个简单的MVC框架。对于研究的心得拿…...

自助建站系统源码下载/开源crm系统

联想thinkpad e580笔记本网卡驱动是款不错的lenovo系列的驱动程序&#xff0c;如果您的联想笔记本出现无法识别网卡驱动或网络卡顿等情况&#xff0c;可以来本站下载此e580网卡驱动帮助您有效的解决相关问题等&#xff0c;欢迎有需要的用户前来下载&#xff01;联想e580网卡驱动…...

资源库建设网站/爱站网seo工具包

定义和用法 defined() 函数检查某常量是否存在。 若常量存在&#xff0c;则返回 true&#xff0c;否则返回 false。 语法 defined(name) 参数描述name必需。规定要检查的常量的名称。例子 <?php define("GREETING","Hello world!"); echo defined(&quo…...

网站建设一般用什么软件/搜索优化推广公司

<?php /* * author zechen * 2011-4-4 下午04:14:49 * */ //一个普遍通用的PHP连接MYSQL数据库类 class mysql { private $db_host; //数据库主机 private $db_user; //数据库用户名 private $db_pwd; //数据库用户名密码 private $db_database; //数…...

网站群如何做网站/站长推荐入口自动跳转

传送门&#xff1a;hdu4185 Oil Skimming 题意&#xff1a;n*n的方格里有字符*和#&#xff0c;只能在字符#上放1*2的板子且不能相交&#xff0c;求最多能放多少个。 分析&#xff1a;直接给#字符编号&#xff0c;然后相邻的可以匹配&#xff0c;建边后无向图跑匈牙利算法&#…...