中间件¶
默认中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', # 安全中间件
'django.contrib.sessions.middleware.SessionMiddleware', # session 中间件,处理用户登录信息
'django.middleware.common.CommonMiddleware', # 常用信息
'django.middleware.csrf.CsrfViewMiddleware', # 处理 CSRF 跨站攻击
'django.contrib.auth.middleware.AuthenticationMiddleware', # 处理用户认证登录
'django.contrib.messages.middleware.MessageMiddleware', # 处理消息
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
创建请求日志,性能日志记录中间件
定义实现中间件函数:
def performance_logger_middleware(get_response)记录请求URL,参数,响应时间
注册 middleware 到 settings 中
配置日志文件路径
import time
import logging
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["X-Page-Duration-ms"] = int(duration * 1000)
logger.info("%s %s %s", duration, request.path, request.GET.dict())
return response
return middleware
把定义的中间件加到 settings MIDDLEWARE 配置中
# 中间件的执行顺序是从上到下依次执行
MIDDLEWARE = [
'commands.performance.performance_logger_middleware', # 包名.文件名.函数名或类名
'django.middleware.security.SecurityMiddleware', # 安全中间件
'django.contrib.sessions.middleware.SessionMiddleware', # session 中间件,处理用户登录信息
'django.middleware.common.CommonMiddleware', # 常用信息
'django.middleware.csrf.CsrfViewMiddleware', # 处理 CSRF 跨站攻击
'django.contrib.auth.middleware.AuthenticationMiddleware', # 处理用户认证登录
'django.contrib.messages.middleware.MessageMiddleware', # 处理消息
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
在日志配置中加入
'performance': { # 性能日志记录信息
# 'level': 'INFO',
'class': 'logging.FileHandler',
'formatter': 'simple',
'filename': os.path.join(LOG_DIR, 'logs/performance.log'),
},