前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-访问日志统计中间件

Django实战-访问日志统计中间件

作者头像
小团子
发布2019-09-17 17:58:23
1.2K0
发布2019-09-17 17:58:23
举报
文章被收录于专栏:数据云团

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

当 Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行。可以在 Middleware 这个地方把所有 Request 拦截住,用自定义的方式完成处理以后直接返回 Response。

在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件。

一、配置日志文件

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

二、统计中间件

代码语言:javascript
复制
import time
import logging
from django.conf import settings
代码语言:javascript
复制
# 加载日志信息
logger = logging.getLogger("statistics")
logger2 = logging.getLogger("django")
代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档