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 ...
随机推荐
- js如何开发游戏(聊天篇)
公司最近有这方面的需求,期望我们能搞出点有趣的小游戏来帮助公司进行推广,公司没有专门做游戏开发的员工,很不幸这件事情掉到了前端头上. 我记得我以前在学习的时候曾经见过一些厉害的前端工程师编写过一些网页 ...
- mysql的下载安装
不知道为什么,写这篇文章我总是想感慨一下.首先我的感谢和敬佩那些能把知识和技术分享出来的开发者,不管你的技术是否很牛,但是你的精神让我十分敬佩.学java的已经二天了,除了问问朋友,给我最大帮助的就是 ...
- Health Check - 每天5分钟玩转 Docker 容器技术(142)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...
- EasyUI动态加载panel,并给panel添加内容
例子: 给布局内动态添加一个panel,给panel一个id,加内容的时候加到这个id里就可以了 var str=$('<div> <textarea id="contex ...
- 轮评审用例,写用例的重要性-----(python单元测试反思)
时间过的真快,3月底了,更新一次博客吧,算是对三月份忙碌的一个总结. 吃过饭,习惯登录qq,看到我群里的一个大神,碎冰发的一个作业 不就是写个代码吗,然后写完再进行测试这个代码是否实现了这个功能. 于 ...
- Angular开发实践(三):剖析Angular Component
Web Component 在介绍Angular Component之前,我们先简单了解下W3C Web Components 定义 W3C为统一组件化标准方式,提出Web Component的标准. ...
- FNV算法实战
HASH算法介绍 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长 ...
- SpringMVC的工作流程以及组件说明
1. SpringMVC处理流程 2. SpringMVC架构 2.1 框架结构 2.2 框架流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherSer ...
- PHP中的ArrayAccess用法详解
在Laravel的源码当中,作者多次使用到了PHP SPL中的ArrayAccess接口,那么这个ArrayAccess接口到底有什么作用呢?我会用一个简单的例子跟大家说明. 请看下面的这段代码,Fo ...
- python 对模块的应用你还得练点这些
1.有如下字符串:n = "路飞学城"(编程题) - 将字符串转换成utf-8的字符编码的字节,再将转换的字节重新转换为utf-8的字符编码的字符串 - 将字符串转换成gbk的字符 ...