写点什么

【Django | 开发】中间件配置(记录响应耗时日志)

  • 2022 年 8 月 31 日
    广东
  • 本文字数:1222 字

    阅读完需:约 4 分钟


🤵‍♂️ 个人主页: @计算机魔术师👨‍💻 作者简介:CSDN 内容合伙人,全栈领域优质创作者。


🌐 推荐一款找工作神器网站: 牛客网🎉🎉|笔试题库|面试经验|实习招聘内推 还没账户的小伙伴 速速点击链接跳转牛客网登录注册 开始刷爆题库,速速通关面试吧🙋‍♂️


该文章收录专栏---【Django | 项目开发】从入门到上线 专栏---


@[toc]

一、 中间件介绍

官方文档




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

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


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

2. 添加代码

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


import loggingimport 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. 运行服务器

  • 刷新页面几次可以看到 日志记录成功

  • 终端也显示成功

  • 浏览器也能看到 header 标头信息


参考文献:


git -u 参数


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


用户头像

还未添加个人签名 2022.08.13 加入

还未添加个人简介

评论

发布
暂无评论
【Django | 开发】中间件配置(记录响应耗时日志)_8月月更_计算机魔术师_InfoQ写作社区