日志分析技术

算法:

创建四个list对应存储不同的响应时间段

读入日志文件每行内容,依次存入列表

1.取出日志文件中每一次处理请求的时间,存入相应的list

  1.1 取出时间字符串

            先找到“op takes ”的位置-->idx1

            再找到 idx1 其后面紧跟着的第一个空格的位置-->idx2

         这行日志[idx1:idx2] -->responsetimestr

  1.2判断其值,存入相应list

2.统计每个时间段list处理时间的个数,并计算百分比

# coding:utf-8

# 100ms以下的
list100 = []
# 100ms-500ms
list100_500 = []
# 500ms-1000ms
list500_1000 = []
# 1000ms以上的
list1000 = []

filepath = 'server.log'
fd = open(filepath)
lines = fd.readlines()
fd.close()
keyword = 'mac1:'
for line in lines:
#获取响应时间
idx1 = line.find(keyword)
idx1 += len(keyword)
idx2 = line.find('',idx1)
responsetimestr = line[idx1:idx2]

rts = float(responsetimestr)
#存入容器
if rts < 0.1:
list100.append(rts)
elif 0.1 <= rts <0.5:
list100_500.append(rts)
elif 0.5 <= rts <1:
list500_1000.append(rts)
elif rts >=1:
list1000.append(rts)
num100 = len(list100)
num100_500 = len(list100_500)
num500_1000 = len(list500_1000)
num1000 = len(list1000)
totalnum = float(num100+num100_500+num500_1000+num1000)



print u'0ms-100ms :%个,百分之 %.2f'% (num100,num100*100/totalnum)
print u'100ms-500ms :%个,百分之 %.2f'% (num100_500,num100_500*100/totalnum)
print u'500ms-1000ms :%个,百分之 %.2f'% (num500_1000,num500_1000*100/totalnum)
print u'>1000ms :%个,百分之 %.2f'% (num1000,num1000*100/totalnum)


重点:
设计方法
人工操作角度思考
伪代码描述思路
代码实现伪代码
注意代码的可读性:合理命令;相应注释
断点和单步执行的方式解决问题

原文地址:https://www.cnblogs.com/seven000/p/7383920.html