123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- # coding: utf-8
- import re
- import sys,os
- import time
- import dateutil, pylab,random
- from pylab import *
- import datetime
- class Logstatistics(object):
- def __init__(self):
- self.log_base = r'C:\Users\Administrator\Desktop\minions'
- self.date = '11-25'
- self.log_name = 'random_danmu.log'
- self.base_log_path = r'C:\Users\Administrator\Desktop\lags'
- self.chatroom_log = os.path.join(self.log_base,self.date+self.log_name)
- def writelog(self,logname,content):
- with open(os.path.join(self.base_log_path,logname),'w') as f:
- f.write(content)
- def log_list(self):
- self.logs = []
- for root,dirs,files in os.walk(self.log_base):
- if self.date+self.log_name in files and root != self.log_base:
- self.logs.append(os.path.join(root,self.date+self.log_name))
- return self.logs
- def compare(self):
- chatroom_result,name,count = self.build_dict(self.chatroom_log)
- for log in self.logs:
- d,point_name,logcount = self.build_dict(log)
- times = []
- lags = []
- n = 0
- #for key,values in d.items():
- for key,values in sorted(d.items(),key = lambda d:d[1][0]):
- if values[-1] > '1':
- try:
- times.append(datetime.datetime.strptime(values[0].split()[0],'%H:%M:%S.%f'))
- lags.append(int(values[-1]))
- except Exception,e:
- print e
- pass
- if key not in chatroom_result:
- n+=1
- pylab.plot_date(pylab.date2num(times), lags, linestyle='-')
- text(24,120, '')
- pylab.rc('font',size = 8)
- xtext = xlabel(u'time')
- ytext = ylabel(u'lag: s')
- title_string = point_name + '\n' + 'lost package: ' + str(n) + '\n' + 'lost percent: ' + str('%.2f' % float(float(n)/float(logcount)))
- ttext = title(title_string)
- grid(True)
- setp(ttext, size='large', color='r')
- setp(xtext, size='medium', weight='bold', color='g')
- setp(ytext, size='medium', weight='light', color='g')
- savefig(os.path.join(self.base_log_path , (point_name + '.png')),dpi = 120)
- #show()
- pylab.cla() #clear any prior graph
-
- print point_name,n,logcount,float(n)/float(logcount)
- #print point_name,n,'%.2f' % float(float(n)/float(logcount))
- # elif switch == 'lag':
- # strings = ''
- # l= []
- # for values in d.values():
- # mi_co = values[-1]
- # if int(mi_co) > 0 :
- # l.append(values)
- # l.sort(key=lambda x:int(x[2]),reverse=True)
- # for each in l:
- # string = '\t'.join(each)
- # strings += string + '\n'
- # self.writelog(point_name,strings)
- def build_dict(self,file):
- point_name = file.split(self.log_base)[1].split('\\')[1]
- d = {}
- with open(file,'r') as f:
- n = 0
- try:
- for line in f:
- if line[:-1].strip():
- n += 1
- line = line.strip()
- split_line = line.split()
- id = split_line[5]
- ci = split_line[7].replace(',','')
- time = split_line[1].replace(']:','')
- mi_co = split_line[-1]
- d[id] = (time,ci,mi_co)
- except:
- print line
- pass
- return d,point_name,n
- def log_result(self):
- self.compare(switch='lag')
- def plot(self):
- pass
- A = Logstatistics()
- A.log_list()
- #print A.compare(switch='lag') #write log
- print A.compare()
|