拿到了自己阿里云服务器的日志,对其需要进行处理。

  1. class Read_Rizhi:
  2. def __init__(self,filename):
  3. self.filename=filename
  4. def open_file(self):
  5. try:
  6. f = open(self.filename, 'r', encoding='utf-8')
  7. resuly = {'code': 1, 'result': f}
  8. except Exception as e:
  9. resuly = {'code': 0, 'result': e}
  10. return resuly
  11. def read_line(self):
  12. result=self.open_file()
  13. if result['code']==0:
  14. return {'read':'fail','relust':result['result']}
  15. elif result['code']==1:
  16. return {'read':'pass','relust':result['result'].readlines()}
  17. else:
  18. return {'read':'error','relust':'未知错误'}
  19. def print_eachline(self,splist:str):
  20. eachline=self.read_line()
  21. if eachline['read']=='pass':
  22. for rizhi in eachline['relust']:
  23. ri=rizhi.split(splist)
  24. print('请求ip:', ri[0])
  25. print('请求时间磋:', ri[3])
  26. print('请求方式:', ri[5])
  27. print('请求路径:', ri[6])
  28. print('请求协议:', ri[7])
  29. print('返回状态吗:', ri[8])
  30. elif eachline['read']=='fail':
  31. print('读取失败!原因:%s'%eachline['relust'])
  32. else:
  33. print('读取异常')
  34. if __name__=='__main__':
  35. rizhi=Read_Rizhi('access.log')
  36. rizhi.print_eachline(' ')

  对日志解析进行封装,对日志的需求进行了自己的分析,

学了flask,你能不能吧这个日志给我放到flask 给一个前端的界面去展示呢,答案是没有问题的,对代码进行修改:

  1. class Read_Rizhi:
  2. def __init__(self,filename):
  3. self.filename=filename
  4. def open_file(self):
  5. try:
  6. f = open(self.filename, 'r', encoding='utf-8')
  7. resuly = {'code': 1, 'result': f}
  8. except Exception as e:
  9. resuly = {'code': 0, 'result': e}
  10. return resuly
  11. def read_line(self):
  12. result=self.open_file()
  13. if result['code']==0:
  14. return {'read':'fail','relust':result['result']}
  15. elif result['code']==1:
  16. return {'read':'pass','relust':result['result'].readlines()}
  17. else:
  18. return {'read':'error','relust':'未知错误'}
  19. def print_eachline(self,splist:str):
  20. eachline=self.read_line()
  21. if eachline['read']=='pass':
  22. ip_list=[]
  23. for rizhi in eachline['relust']:
  24. ri=rizhi.split(splist)
  25. ip_list.append({'ip':ri[0],'time':ri[3],
  26. 'meth':ri[5],'path':ri[6],'xieyi':ri[7],
  27. 'code':ri[8]})
  28. relust={'code':1,'result':ip_list}
  29. elif eachline['read']=='fail':
  30. relust = {'code':2, 'result':eachline['relust']}
  31. else:
  32. relust = {'code': 3, 'result':'读取异常'}
  33. return relust

 flask部分代码如下:

  1. from flask import Flask,render_template
  2. from jiexi import Read_Rizhi
  3. app = Flask(__name__)
  4. @app.route('/')
  5. def hello_world():
  6. rizhi = Read_Rizhi(r'C:\\Users\Administrator\Desktop\\untitled1\access.log')
  7. relust = rizhi.print_eachline(' ')
  8. if relust['code'] == 1:
  9. f_list = relust['result']
  10. return render_template('rizi.html',f_lis=f_list)
  11. if __name__ == '__main__':
  12. app.run()

rizi.html部分代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>阿里云日志分析</title>
  6. </head>
  7. <body>
  8. <h1 style="text-align: center">阿里云日志分析</h1>
  9. <table style="width: 60%;margin-top: 40px" border="1">
  10. <tbody>
  11. <tr>
  12. <td>ip</td>
  13. <td>时间</td>
  14. <td>请求方式</td>
  15. <td>请求路径</td>
  16. <td>协议</td>
  17. <td>状态码</td>
  18. </tr>
  19. {% for item in f_lis%}
  20. <tr>
  21. <td>{{ item.ip }}</td>
  22. <td>{{ item.time }}</td>
  23. <td>{{ item.meth }}</td>
  24. <td>{{ item.path }}</td>
  25. <td>{{ item.xieyi }}</td>
  26. <td>{{ item.code }}</td>
  27. </tr>
  28. {% endfor %}
  29. </tbody>
  30. </table>
  31. </body>
  32. </html>

启动flask模块,

访问:

这样我们进一步优化就结束了,其实还可以进行优化,

这样还得需要我们进一步去的优化,部分切割还是不完善的。简单的切割,展示完成。十分钟就能实现的一个小功能。

python+flask 分分钟完美解析阿里云日志的更多相关文章

  1. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  2. 自建k8s集群日志采集到阿里云日志服务

    自建k8s集群 的master 节点安装 logtail 采集工具 wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.c ...

  3. 杂项-分布式-EDAS:深度解析阿里云EDAS服务

    ylbtech-杂项-分布式-EDAS:深度解析阿里云EDAS服务 1.返回顶部 1. 深度解析阿里云EDAS服务 弹性伸缩 摘要: 第一种只适用于业务较少的情况,而在新业务不断增加的情况下,增加新应 ...

  4. 阿里云日志服务 ilogtail 卸载方法

    之前使用阿里云日志服务,按照文档安装了ilogtail.后面不需要了,却找不到卸载文档.仔细查看ilogtail的安装脚本后,发现里面有卸载方法. wget http://logtail-releas ...

  5. ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志

    按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力.现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出.日志文件同步到阿里云日志服务(SLS)进行 ...

  6. 阿里云日志服务SLS

    前言: 刚入职实习了几天,我发现我的任务就是学习阿里云日志服务这块业务内容,这个功能和mysql一样,但是速度和视觉却是甩mysql这类数据库几条街. 当得知公司没人会这项技术后(在这之前我也没听过, ...

  7. 消费阿里云日志服务SLS

    此文档只关心消费接入,不关心日志接入,只关心消费如何接入,可直接跳转到[sdk消费接入] SLS简介 日志服务: 日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务,在阿里巴 ...

  8. 用python发送短消息(基于阿里云平台)

    新版短信接口在线测试页面:https://api.aliyun.com/new#/?product=Dysmsapi&api=SendSms&params={}&tab=DEM ...

  9. 阿里云日志服务采集自建Kubernetes日志(标准输出日志)

    日志服务支持通过Logtail采集Kubernetes集群日志,并支持CRD(CustomResourceDefinition)进行采集配置管理.本文主要介绍如何安装并使用Logtail采集Kuber ...

随机推荐

  1. Redis之Set

    一.Redis之Set简介 1. Set是String类型的无序集合(元素成员唯一). 2. Set是通过hash表实现的,添加.删除.查找的复杂度都是O(1). 3. 每个集合最大成员数为232-1 ...

  2. es6学习笔记--字符串&数值&数组&函数&对象的扩展

    这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.in ...

  3. C++实现控制台版2048

    前言 之前做过一个JavaScript版本的2048游戏,最近在学习C++,昨天晚上突然心血来潮,想用C++来实现,因为核心算法已十分理解,所以两个小时撸出来一个C++的简易版本. 简介 二维数组遍历 ...

  4. 简单探讨 javascript 闭包

    函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的函数是这样定义的: function sum(arr) { ret ...

  5. Openflow简介和安装

    搞网络研究的,跟踪斯坦福stanford大学的研究就很重要. 因为思科CISCO与斯坦福的渊源太深了.被誉神雕侠侣的思科创始人Sandy Lerner夫妇,一个在计算机学院,一个在商学院. 最近去看了 ...

  6. Java项目转换成Web项目

    阐述:有时候我们在Eclipse中导入一个web项目,发现导入到项目中后变成一个Java项目,这让人很蛋疼.本篇主要讲述怎样将这个本该为web项目的Java项目变身回去,以及一些在导入过程中遇到的一些 ...

  7. 数据库连接问题之:Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!

    要么是驱动问题(没加载到工程中去或者其他问题)要么是账号密码或者url或者driver写错 driver:com.mysql.jdbc.Driver url:jdbc:mysql://localhos ...

  8. mysql主从复制的基本原理

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...

  9. nodejs加密Crypto简单例子

    加密技术通常分为两大类:“对称式”和“非对称式”. 对称式加密: 就是加密和解密使用同一个密钥,通常称之为“Session Key ”这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是 ...

  10. JS基础三

    1.delete删除对对象的属性和方法的定义.强制解除对它的引用,将其设置为 undefined delete 运算符不能删除开发者未定义的属性和方法. 2.void 运算符对任何值返回 undefi ...