python flask 日志_python+flask 分分钟完美解析阿里云日志

这篇博客介绍了如何使用Python的Flask框架将阿里云服务器日志进行解析并显示在前端界面上。通过定义一个Read_Rizhi类,实现了日志文件的读取和按行解析,然后在Flask应用中,将解析后的数据传递给HTML模板展示。
摘要由CSDN通过智能技术生成

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

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(' ')

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

f207c459be137f0ccde08e09cc72389b.png

学了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 importFlask,render_templatefrom jiexi importRead_Rizhi

app= Flask(__name__)

@app.route('/')defhello_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部分代码:

阿里云日志分析

阿里云日志分析

ip时间请求方式请求路径协议状态码{% for item in f_lis%}{{ item.ip }}{{ item.time }}{{ item.meth }}{{ item.path }}{{ item.xieyi }}{{ item.code }}{% endfor %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值