【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)

简介: 【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)

文章目录

一、 中间件介绍

官方文档

图片.png

图片.png

图片.png

二、创建请求日志,性能日志记录中间件

  • 用于记录用户请求url 花费时间以及参数

图片.png

1. 在interview项目创建脚本performance.py

2. 添加代码

最外层函数必须接受函数get_response,必须要存在内部函数middleware以用作为中间件函数返回

import logging
import time
logger = logging.getLogger(__name__)  # 默认模块路径名
def performance_logger_middleware(get_response):
  def middleware(request):
    start_time = time.time()
    response = get_response(request)
    duration = time.time() - start_time
    # 添加到表头(可以在浏览器直接看到)
    response.headers['X-page-Duration-ms'] = int(duration * 1000)
    logger.info(f"duration: {duration} path: {request.path} parameter: {request.GET.dict()} ")
    return response
  return middleware

3. 添加到setting文件 ( 由于是处理 请求耗时,所以我们放在第一个位置)

MIDDLEWARE = [
  'interview.performance.performance_logger_middleware', # 这里
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

4. 配置logger模块

添加handels处理器,和添加记录器logger

    'performance_file': {
      'formatter': 'simple',
      'level': 'INFO',
      'filename': os.path.join(BASE_DIR,'logs/performance.log'),
      'class': 'logging.FileHandler'
    }
'loggers': {
    # 默认使用loggers 没有指定则使用root
    # django 默认记录器
    'django': {
      'handlers': ['file', 'console'],
      'level': 'INFO',
      'propagate': True,
    },
    # 与logger名字一样
    'interview.performance': {
      'handlers': ['console','performance_file'],
      'propagate': False,
      'level': 'INFO',
    }
  }

5. 运行服务器

  • 刷新页面几次可以看到 日志记录成功图片.png
  • 终端也显示成功图片.png
  • 浏览器也能看到header 标头信息
    图片.png

参考文献:

git -u 参数

🤞到这里,如果还有什么疑问🤞
    🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩
      🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
5月前
|
Shell 数据库 网络架构
Django+DRF 实战:从异常捕获到自定义错误信息(下)
本文详解了 Django REST Framework 中 ValidationError 的验证流程与优先级,涵盖字段内置验证、自定义验证方法、对象级验证及数据库约束,并通过实战演示如何自定义异常提示信息。
151 1
Django+DRF 实战:从异常捕获到自定义错误信息(下)
|
5月前
|
数据安全/隐私保护 网络架构 UED
Django+DRF 实战:从异常捕获到自定义错误信息
本文介绍了DRF(Django REST framework)中的异常处理机制,重点讲解了内置异常类ValidationError的使用场景与示例。同时通过用户注册功能的实战演示,展示了如何在序列化器中自定义参数校验规则,并在视图中捕获并返回结构化的错误信息,提升接口的健壮性与用户体验。
122 0
|
8月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
263 22
|
9月前
|
SQL 缓存
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
|
JSON 中间件 数据格式
django获取request请求头信息,获取Content-Type
django获取request请求头信息,获取Content-Type
242 4
|
数据库 数据安全/隐私保护 数据库管理
#099473#基于django的毕业生信息管理招聘系统
#099473#基于django的毕业生信息管理招聘系统
160 4
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
255 1
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
787 0
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?