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

class Read_Rizhi:
def __init__(self,filename):
self.filename=filename
def open_file(self):
try:
f = open(self.filename, 'r', encoding='utf-8')
resuly = {'code': 1, 'result': f}
except Exception as e:
resuly = {'code': 0, 'result': e}
return resuly
def read_line(self):
result=self.open_file()
if result['code']==0:
return {'read':'fail','relust':result['result']}
elif result['code']==1:
return {'read':'pass','relust':result['result'].readlines()}
else:
return {'read':'error','relust':'未知错误'}
def print_eachline(self,splist:str):
eachline=self.read_line()
if eachline['read']=='pass':
for rizhi in eachline['relust']:
ri=rizhi.split(splist)
print('请求ip:', ri[0])
print('请求时间磋:', ri[3])
print('请求方式:', ri[5])
print('请求路径:', ri[6])
print('请求协议:', ri[7])
print('返回状态吗:', ri[8])
elif eachline['read']=='fail':
print('读取失败!原因:%s'%eachline['relust'])
else:
print('读取异常')
if __name__=='__main__':
rizhi=Read_Rizhi('access.log')
rizhi.print_eachline(' ')

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

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

class Read_Rizhi:
def __init__(self,filename):
self.filename=filename
def open_file(self):
try:
f = open(self.filename, 'r', encoding='utf-8')
resuly = {'code': 1, 'result': f}
except Exception as e:
resuly = {'code': 0, 'result': e}
return resuly
def read_line(self):
result=self.open_file()
if result['code']==0:
return {'read':'fail','relust':result['result']}
elif result['code']==1:
return {'read':'pass','relust':result['result'].readlines()}
else:
return {'read':'error','relust':'未知错误'}
def print_eachline(self,splist:str):
eachline=self.read_line()
if eachline['read']=='pass':
ip_list=[]
for rizhi in eachline['relust']:
ri=rizhi.split(splist)
ip_list.append({'ip':ri[0],'time':ri[3],
'meth':ri[5],'path':ri[6],'xieyi':ri[7],
'code':ri[8]})
relust={'code':1,'result':ip_list}
elif eachline['read']=='fail':
relust = {'code':2, 'result':eachline['relust']}
else:
relust = {'code': 3, 'result':'读取异常'}
return relust

 flask部分代码如下:

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

rizi.html部分代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>阿里云日志分析</title>
</head>
<body>
<h1 style="text-align: center">阿里云日志分析</h1>
<table style="width: 60%;margin-top: 40px" border="1">
<tbody>
<tr>
<td>ip</td>
<td>时间</td>
<td>请求方式</td>
<td>请求路径</td>
<td>协议</td>
<td>状态码</td>
</tr>
{% for item in f_lis%}
<tr>
<td>{{ item.ip }}</td>
<td>{{ item.time }}</td>
<td>{{ item.meth }}</td>
<td>{{ item.path }}</td>
<td>{{ item.xieyi }}</td>
<td>{{ item.code }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</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. Android KeyCode 列表

    基本按键 KEYCODE_0 按键'0' 7 KEYCODE_1 按键'1' 8 KEYCODE_2 按键'2' 9 KEYCODE_3 按键'3' 10 KEYCODE_4 按键'4' 11 KEY ...

  2. 《阿里巴巴Android编码规范》阅读纪要(二)

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 本篇继续上一篇<阿里巴巴Android编码规范>阅读纪要(一) ,还是建议各位同学有时间完整阅读一下<阿里巴巴Android编码规 ...

  3. 15.MySQL(三)

    索引类型 先创建表 mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR( ...

  4. JMockit常用操作

    JMockit常用操作 2017-11-30 转自:http://blog.csdn.net/foreverling/article/details/51234149 目录 1 基本概念  1.1 常 ...

  5. js备战春招の四のjs函数

    1.普通函数声明: 2.函数表达式:函数表达式可以存储在变量中,在函数表达式存储在变量后,变量也可作为一个函数使用: 以上函数实际上是一个 匿名函数 (函数没有名称).函数存储在变量中,不需要函数名称 ...

  6. Bootstrap 在手机页时,导航下拉自动回收

    $(".menu-main").collapse("hide"); //.menu-main就是下来导航的类名

  7. doT.js——前端javascript模板引擎问题备忘录

    我手里维护的一个项目,遇到一个问题:原项目的开发人员在Javascript中,大量的拼接HTML,导致代码极丑,极难维护.他们怎么能够忍受的了这么丑陋.拙劣的代码呢,也许是他们的忍受力极强,压根就没想 ...

  8. Unity中List的随机排序(乱序)

    为什么要给List排序做一个Unity限定条件呢 首先,是C#中的List泛型,若是Java,直接调用Collection.shuffle()就OK了 而Unity的C#版本较低,不能使用Random ...

  9. Linux压缩命令总结

    2018-02-28  10:43:18 linux压缩和解压缩命令大全 tar命令:tar本身仅是一个打包的命令,不具有压缩的功能.打包后源文件仍然存在,具有将多个文件归档成一个文件的功能[root ...

  10. C语言第十次博客作业--结构体

    一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...