Django实战-访问日志统计中间件
- 2019 年 10 月 4 日
- 筆記
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
当 Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行。可以在 Middleware 这个地方把所有 Request 拦截住,用自定义的方式完成处理以后直接返回 Response。
在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件。

一、配置日志文件
通过上一小节的了解,知道 django 如何配置 log 日志信息——Django实战-日志

二、统计中间件
import time import logging from django.conf import settings
# 加载日志信息 logger = logging.getLogger("statistics") logger2 = logging.getLogger("django")
class StatisticsMiddleware: # 初始化 def __init__(self, get_response): self.get_response = get_response logger2.info("Build StatisticsMiddleware.") # 统计请求时间 # __call__ 实例对象也将成为一个可调用对象 def __call__(self, request): tick = time.time() response = self.get_response(request) # 路径 path = request.path # 完整路径 full_path = request.get_full_path() tock = time.time() cost = tock - tick content_list = [] content_list.append("now=[%d]" % tock) content_list.append("path=[%s]" % path) content_list.append("full_path=[%s]" % full_path) # 浮点数 保留小数点后6位 content_list.append("cost=[%.6f]" % cost) # 变成字符串 content = settings.STATISTICS_SPLIT_FLAG.join(content_list) # 保存在日志文件 logger.info(content) return response

