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

Django实战-分析日志

作者头像
小团子
发布2019-09-19 17:25:52
5400
发布2019-09-19 17:25:52
举报
文章被收录于专栏:数据云团数据云团

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

在前一小节中,使用 log 记录访问日志,将用户请求的信息通过中间件存入 django 配置的 log 文件中。

一、分析日志任务

① 通过读取上一小节中日志统计的 log 内容,将分析请求次数、最大值、最小值、平均值

代码语言:javascript
复制
# 读取统计的 log 内容
data_file = os.path.join(settings.BASE_DIR, "log", "statistics.log")
if not os.path.exists(data_file):
    logger.warning("file not exists. file=[%s]" % data_file)
    return

② 打开统计的 log 文件

代码语言:javascript
复制
result = {}
with open(data_file, "r") as data_file:
    for line in data_file:
        # 去掉前后换行符
        line = line.strip()
        # 用空格作为分割
        content = line.split(" ")[2]
        content_list = content.split(settings.STATISTICS_SPLIT_FLAG)
        # 取出时间,用等号作为分割,取后面一项,前面和后面的中括号去掉
        log_time = int(content_list[0].split("=")[1][1:-1])
        path = content_list[1].split("=")[1][1:-1]
        full_path = content_list[2].split("=")[1][1:-1]
        cost = float(content_list[3].split("=")[1][1:-1])

        # 记录数据
        # path: value_list
        if path not in result.keys():
            result[path] = []
        result[path].append(cost)

③ 最大值、最小值、平均值

代码语言:javascript
复制
# 最大值、最小值、平均值
report_content = []
for k, v_list in result.items():
    # 请求次数,时间的次数
    count = len(v_list)
    # 最大值
    v_max = max(v_list)
    # 最小值
    v_min = min(v_list)
    # 平均值
    v_avg = sum(v_list) * 1.00 / count
    # k 请求地址,从右边40
    content = "%-40s COUNT: %d  MAX_TIME: %.4f(s) MIN_TIME: %.4f(s) AVG_TIME: %.4f(s)" % (k, count, v_max, v_min, v_avg)
    report_content.append(content)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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