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

django中日志模块logging的配置和使用

 一、文件的配置

settings.py文件中添加LOGGING块的配置,配置如下

# 日志记录
LOGGING = {"version": 1,"disable_existing_loggers": False,  # 用于确定在应用新的日志配置时是否禁用之前配置的日志器# 格式器"formatters": {"verbose": {  # 输出日志级别名称、日志信息,以及生成日志信息的时间、进程、线程和模块。format格式化输出"format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}","style": "{",},"simple": {  # 输出日志级别名称和日志信息。"format": "{levelname} {message}","style": "{",},},# 过滤器"filters": {"require_debug_true": {"()": "django.utils.log.RequireDebugTrue",  # 当DEBUG为True时,传递记录。},},# 处理器"handlers": {"console": {  # 输出到终端"level": "INFO",  # 日志级别"filters": ["require_debug_true"],  # 使用的过滤器,上边已经定义"class": "logging.StreamHandler",  # 用于将日志消息发送到一个流,通常是一个输出流,比如控制台(标准输出)"formatter": "simple",  # 格式器,上边有定义},"file": {  # 输出到文件"level": "INFO",  # 日志级别"class": "logging.handlers.RotatingFileHandler",  # 将日志输出到一个文件中"filename": os.path.join(BASE_DIR, 'logs/mall.log'),  # 日志输出的文件, os.path.join用来拼接路径"maxBytes": 300 * 1024 * 1024,  # 一个文件300M"backupCount": 10,  # 备份10个文件"formatter": "verbose",  # 格式器},},"loggers": {  # 日志器"django": {  # 创建的日志记录器"handlers": ["console", 'file'],  # 处理方式:在终端输出、输出到文件"propagate": True,  # 日志没有被处理,日志消息将向上传递给上级记录器'level': 'INFO',  # 日志输出最低级别,低于这个将不会输出},},
}

二、记录器的使用
1、导入日志模块

import logging

2、创建日志记录器,'django'在settings文件中已创建,可以自行创建

logger=logging.getLogger('django')

3、调用方法保存日志

logger.error("文件不存在")

logger.info("正常访问")

logger.warning('redis缓存空间不足')

logger.debug("1111")

具体的代码

4、访问结果

只有级别大于等于INFO的日志记录才显示

终端中显示:

日志文件中显示

 

  

三、日志级别介绍

DEBUG:排查故障时使用的低级别系统信息

INFO:一般的系统信息

WARNING:描述系统发生了一些小问题的信息

ERROR:描述系统发生了大问题的信息

CRITICAL:描述系统发生严重问题的信息

日志级别:CRITICAL > ERROR > WARNING > INFO > DEBUG, 只有当日志消息级别大于等于设置好的日志级别,日志消息才会被记录 

http://www.lryc.cn/news/402966.html

相关文章:

  • pyqt/pyside QTableWidget失去焦点后,选中的行仍高亮的显示
  • 函数定义、合约与面向对象(以太坊solidity合约)
  • 微服务:nacos
  • 前端css常用笔记
  • WINUI或WPF灵活使用样式、控件模板、自定义控件、用户控件
  • 如何用EXCEL自动解方程/方程组?利用 矩阵乘法X=A-*B,X=mmult(minverse(A), B)
  • ComfyUI进阶:Comfyroll插件 (二)
  • Spring Boot集成Activity7实现简单的审批流
  • 自动驾驶,革了谁的命
  • 在线实习项目|泰迪智能科技企业级项目学习,暑期大数据人工智能学习
  • 【BUG】已解决:To update, run: python.exe -m pip install --upgrade pip
  • Lua 运算符
  • 园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境
  • MATLAB R2023b下载安装教程汉化中文版设置
  • Java二十三种设计模式-工厂方法模式(2/23)
  • 【iOS】OC类与对象的本质分析
  • 【机器学习】使用Python的dlib库实现人脸识别技术
  • GitHub 令牌泄漏, Python 核心资源库面临潜在攻击
  • 【面试题】Golang 锁的相关问题(第七篇)
  • 深入剖析CommonJS modules和ECMAScript modules
  • 角点检测及MATLAB实现
  • TypeScript导学:从零开始
  • 【BUG】已解决:IndexError: list index out of range
  • AWS-S3实现Minio分片上传、断点续传、秒传、分片下载、暂停下载
  • Selenium - 设置元素等待及加载策略
  • 【数据结构】线性结构——数组、链表、栈和队列
  • json将列表字典等转字符串,然后解析又转回来
  • 记录|.NET上位机开发和PLC通信的实现
  • 微服务实战系列之玩转Docker(二)
  • Linux:信号的概念与产生