python+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':
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 分分钟完美解析阿里云日志的更多相关文章
- flask项目部署到阿里云 ubuntu16.04
title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...
- 自建k8s集群日志采集到阿里云日志服务
自建k8s集群 的master 节点安装 logtail 采集工具 wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.c ...
- 杂项-分布式-EDAS:深度解析阿里云EDAS服务
ylbtech-杂项-分布式-EDAS:深度解析阿里云EDAS服务 1.返回顶部 1. 深度解析阿里云EDAS服务 弹性伸缩 摘要: 第一种只适用于业务较少的情况,而在新业务不断增加的情况下,增加新应 ...
- 阿里云日志服务 ilogtail 卸载方法
之前使用阿里云日志服务,按照文档安装了ilogtail.后面不需要了,却找不到卸载文档.仔细查看ilogtail的安装脚本后,发现里面有卸载方法. wget http://logtail-releas ...
- ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志
按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力.现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出.日志文件同步到阿里云日志服务(SLS)进行 ...
- 阿里云日志服务SLS
前言: 刚入职实习了几天,我发现我的任务就是学习阿里云日志服务这块业务内容,这个功能和mysql一样,但是速度和视觉却是甩mysql这类数据库几条街. 当得知公司没人会这项技术后(在这之前我也没听过, ...
- 消费阿里云日志服务SLS
此文档只关心消费接入,不关心日志接入,只关心消费如何接入,可直接跳转到[sdk消费接入] SLS简介 日志服务: 日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务,在阿里巴 ...
- 用python发送短消息(基于阿里云平台)
新版短信接口在线测试页面:https://api.aliyun.com/new#/?product=Dysmsapi&api=SendSms¶ms={}&tab=DEM ...
- 阿里云日志服务采集自建Kubernetes日志(标准输出日志)
日志服务支持通过Logtail采集Kubernetes集群日志,并支持CRD(CustomResourceDefinition)进行采集配置管理.本文主要介绍如何安装并使用Logtail采集Kuber ...
随机推荐
- 8Manage:数据安全,企业新时代的护航利器
数据安全,是个老生常谈的话题,但是安全往往是在危险的时候方能体现出来,因此,这也是很容易被人们所忽略的部分.2017年,数据安全事件更是屡屡登上头条,除了个人信息的数据泄露之外,还有网络病毒造成的全球 ...
- python之hasattr()、 getattr() 、setattr() 函数
这三个方法可以实现反射和内省机制,在实际项目中很常用,功能也很强大. [转]http://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, na ...
- Java集合中的LinkedHashMap类
jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合. ...
- SpringMVC【校验器、统一处理异常、RESTful、拦截器】
前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实 ...
- 纯css3打造瀑布流布局
纯css3打造瀑布流布局 原理: 1.column-count 把div中的文本分为多少列 2.column-width 规定列宽 3.column-gap 规定列间隙 4.break-inside: ...
- mvvm,如何解析一个指令表达式?
如何解析一个指令表达式? v-model="msg==='abc'?'1':a" 完美的解决方案 1,with(vm){ return new Function('vm',exp) ...
- 笔记:Maven 仓库及配置详解
本地创建默认路径在 用户目录\.m2\repository,如果需要自定义本地创建目录地址,可以编辑文件 用户目录\.m2\settings.xml(文件不存在,则需要从Maven安装目录的Conf目 ...
- 数据库 --> 5种关系型数据库比较
5种关系系数据库比较 目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟.面向对象的数据库管理系统虽然技术先进,数据库易于开发.维护,但尚未有成熟的产品.国际国内的主导关系型数据库管理 ...
- STL --> string类字符串
基本使用方法 一.输入 string s: cin >> s; getline(cin, s) ; //使用默认的'\n'作为终止符 getline(cin, s, '!') ; //以' ...
- 00_Linux介绍_我的Linux之路
原文章发布于特克斯博客www.susmote.com 什么是操作系统 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在"裸机& ...