2021-08-03-DJ-023 django日志配置与解析

2023-10-24 19:33

本文主要是介绍2021-08-03-DJ-023 django日志配置与解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

日志
官方 文档 对日志的描述

1.常见配置

#日志配置区,LOGGING
LOGGING={'version':1,'formatters':{'simple':{'format':'[%(asctime)s %(name)s] %(message)s','datefmt':'%Y-%m-%d %H:%M:%S'}},'handlers':{'out':{'class':'logging.StreamHandler','formatter':'simple','level':'DEBUG'},'file':{'class':'logging.FileHandler','formatter':'simple','level':'INFO','filename':'mylog.log'}},'loggers':{'django':{'handlers':['out','file'],'level':'DEBUG','propagate':True},'mylog':{'handlers':['file'],'level':'INFO','propagate':True},}
}

2.内容分析

2.1组成部分

LOGGING配置常有下面四个部分组成:
Formatters:格式化
Handlers:处理器
Loggers:记录器
Filters:过滤器

2.2详细介绍 上面的配置

LOGGING={ 日 志设置的标准名称
‘version’:1.0, 版本
‘formatters’:{ 一、 格式化部分
‘simple’:{ 一种格式的名称
‘format’:’[%(asctime)s %(name)s] %(message)s’, 输出格式,括号内是参数,%s是字符串格式
‘datefmt’:’%Y-%m-%d %H:%M:%S’ 日期格式
}
},
‘handlers’:{ 二、处理器部分
‘out’:{ 一个处理器的名称,名称 都可以自己编
‘class’:‘logging.StreamHandler’,
‘formatter’:‘simple’, 格式选simple
‘level’:‘DEBUG’ 日志处理的级别:DEBUG:排查故障时使用的低级别系统信息

    },'file':{                        一个处理器名称'class':'logging.FileHandler','formatter':'simple',                  格式选simple'level':'INFO',							日志处理的级别:INFO:一般的系统信息'filename':'mylog.log'              存储文件名}
},
'loggers':{                            三、记录器部分'django':{												一个记录器名字'handlers':['out','file'],						这个记录器包含的处理器列表'level':'DEBUG',								日志记录级别,等同于os.getenv('DJANGO_LOG_LEVEL', 'INFO'),'propagate':True                              传播},'mylog':{                                              一个记录器名字'handlers':['file'],                             这个记录器包含的处理器列表'level':'INFO',                                日志记录的级别'propagate':True                           传播},}

}

2.3日志级别

日志级别表示只有这个级别以上的消息系统才提示
日志级别有:
DEBUG:排查故障时使用的低级别系统信息
INFO:一般的系统信息
WARNING:描述系统发生了一些小问题的信息
ERROR:描述系统发生了大问题的信息
CRITICAL:描述系统发生严重问题的信息
禁用默认的日志配置,在settings中设置

LOGGING_CONFIG = None
或者在LOGGING中 加 disable_existing_loggers 键为 True

handlers 里面的class有哪些请参考:【Python基础】Python模块之Logging(四)——常用handlers的使用

propagate是传播, 是否让日志信息继续冒泡给其他的日志处理系统,子级向父级传播
对日志的参数介绍的比较好的一篇博客是这个Django中的日志详解。

3.框架中操作

自己引发日志 记录
配置好日志记录参数后在上节做的中间件里做这件事情

import logging
class LoginCheckMiddleware(MiddlewareMixin):def process_request(self,request):print('login_checkMiddleware,request',request.path,request.META['REMOTE_ADDR'])excludelist=['/main/login','/main/imgcode']if request.path not in excludelist:#验证 用户是否已经登录if not request.COOKIES.get('token'):ip=request.path,request.META['REMOTE_ADDR']path=request.get_raw_uri()msg='%s->%s'%(ip,path)logging.getLogger('mylog').warning(msg)return HttpResponseRedirect('/main/login')
            logging.getLogger('mylog').warning(msg)

这句话表示用mylog记录器,打印一个warning级别的消息,在这个记录器里面,是以文件的形式的,所以消息会在日志文件里记录

我们现在去浏览器中触发这个消息

在这里插入图片描述

里面的三条warning就是以我们自定义的方式触发的

这篇关于2021-08-03-DJ-023 django日志配置与解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/277311

相关文章

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1