当前位置: 首页 > 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, 只有当日志消息级别大于等于设置好的日志级别,日志消息才会被记录 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • OpenCV教程:cv2如何把两张图片的大小,设置成相同的宽高
  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(一)-3GPP TS 23.256 技术规范概述
  • 简约的悬浮动态特效404单页源HTML码
  • Elasticsearch:如何选择向量数据库?
  • PHP 在shell服务器 创建定时任务 - thinkphp6 crontab
  • STM32自己从零开始实操:PCB全过程
  • Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能
  • 第十届能源材料与电力工程国际学术会议(ICEMEE 2024)
  • 【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)
  • 观察者模式实战:Spring Boot中联动更新机制的优雅实现
  • 单链表<数据结构 C版>
  • Ubantu 使用 docker 配置 + 远程部署 + 远程开发
  • 【JavaScript 算法】贪心算法:局部最优解的构建
  • JVM(day2)经典垃圾收集器
  • C++:类的定义和实例化
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • docker python 配置
  • Fabric架构演变之路
  • happypack两次报错的问题
  • Node 版本管理
  • ReactNative开发常用的三方模块
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 爱情 北京女病人
  • 从PHP迁移至Golang - 基础篇
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 技术:超级实用的电脑小技巧
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端_面试
  • 什么是Javascript函数节流?
  • 收藏好这篇,别再只说“数据劫持”了
  • 通过npm或yarn自动生成vue组件
  • 推荐一个React的管理后台框架
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 优化 Vue 项目编译文件大小
  • 责任链模式的两种实现
  • 正则表达式
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • # SpringBoot 如何让指定的Bean先加载
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (Forward) Music Player: From UI Proposal to Code
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (搬运以学习)flask 上下文的实现
  • (第30天)二叉树阶段总结
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (十八)Flink CEP 详解
  • (十六)串口UART
  • (五)网络优化与超参数选择--九五小庞
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)创业的注意事项
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net(C#)中String.Format如何使用
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET与 java通用的3DES加密解密方法