# -*- coding: utf-8 -*- # """ 1.输入文件名,从文件中根据关键字检索信息 2.返回一个结果清单,方便统计 3.输入参数 文件名称的一部分 默认去log查询 """ import re,sys,os,time def f_filter_log(file_name=''): res={} fhand = open(file_name,'r') for line in fhand: if re.search('.*:Pls check config.*', line): # print(line) _conf=line.split()[4].replace('!','') if re.search('.*already .*, quit!', line): _db=line.split()[4] if re.search('.*:Run.*threads, start!!', line): # print(line) _time=line.split(':')[1] _host=line.split(':')[2] _runcase=line.split()[1] _threads=line.split()[3] _key='%s,%s, %s,%s, %4s,%18s' %(_host,_time,_conf,_db,_threads,_runcase) # print(_key) res[_key]='' if re.search('[ ]*transactions: .*', line): # print(line) _tps=line.split()[2][1:-1] if re.search('[ ]*queries: .*', line): # print(line) _qps=line.split()[2][1:-1] if re.search('[ ]*avg: .*', line): # print(line) _avg=line.split()[-1] if re.search('[ ]*95th .*', line): # print(line) _95th=line.split()[-1] _value='%s, %s, %s, %s' %(_tps,_qps,_avg,_95th) res[_key]=_value print("") print("Total find %s rows in %s" %(len(res),file_name)) for a_dic in res: print('%s, %s'%(a_dic,res[a_dic])) def f_get_file_list(ls_str=''): pass def main(): print(sys.argv) if len(sys.argv) == 1: print("Not input any parameter, search all file on current dir") _file_part='.' else: print("Will search file which contain %s" %(sys.argv[1])) _file_part = sys.argv[1] # f_get_file_list('sys.argv[0]') # file_name='run_bench_tidbha01.sh.20220325.181705.log' # f_filter_log(file_name) files=os.listdir('./logs') i=0 print("--------------------------------------------------------------------------------") print("host,exectime, sysbenchconf,database, threads, runcase, tps, qps, avg, 95th") print("--------------------------------------------------------------------------------") time.sleep(2) for _file in files: if not re.search(_file_part, _file): continue f_filter_log('./logs/%s' %(_file)) i=i+1 print('\n*****Finish, Total hanle %s files!*****\n' %(i)) if __name__ == '__main__': main()