【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实时生图绘板
相关文章
|
10月前
|
缓存 监控 中间件
Django中间件自定义开发指南:从原理到实战的深度解析
Django中间件是Web应用的“交通警察”,在请求与响应过程中进行全局处理,适用于身份验证、日志记录、性能监控等功能。本文详解中间件的工作原理、开发步骤及实战案例,帮助开发者掌握自定义中间件的构建方法,提升Django应用的可维护性与扩展性。
526 0
|
12月前
|
中间件 数据库 Python
Django实战:自定义中间件实现全链路操作日志记录
Django中间件是一套轻量级插件系统,用于全局处理请求与响应。通过自定义中间件可实现如操作日志记录等功能,支持在请求、视图、响应及异常阶段插入逻辑。本文详解中间件生命周期、编写方式及实战案例。
276 1
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
369 22
|
SQL 缓存
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
【YashanDB知识库】YashanDB run.log中有slow log queue is full信息
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
241 4
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
355 1
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
中间件 Python
理解Django中间件及其应用实例
理解Django中间件及其应用实例
269 0
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
1056 0
|
中间件 数据库连接 UED
Django中间件秘籍:如何用几行代码让你的应用变得超级强大?
【8月更文挑战第31天】中间件是Django框架的核心特性,位于视图与HTTP服务器之间,允许全局处理请求和响应,增强Web应用功能。通过实现`MiddlewareMixin`类的方法,如`process_request`和`process_response`,可以轻松实现请求预处理或响应后处理。中间件应用场景广泛,包括用户认证、CSRF防护和数据库连接管理等。创建并配置中间件需将其加入`settings.py`的`MIDDLEWARE`列表,顺序决定执行优先级。合理利用中间件能提高代码重用性和应用性能,带来更好的用户体验。
248 0