脚本功能包括:
1、解析日志,截取出需要的字段
2、生成excel报表
''' This file is to parse during-time between some operations from log. ''' import csv file_path = "C:\\Users\\xxxxxx\\" file_name = "xxxxxxx.txt" file_text = file_path + file_name beginConnect = "[User] Enter ConnectToServer" endConnect = "AuthDlg::OnInitDialog : [User] Enter Init." beginLogin = "AuthDlg::OnOk : [User] Enter Windows_Password:Ok." endLogin = "Notifying listener" ############need change beginLaunchWin = "LaunchItem::Connect : [User] Enter ConnectToItem" endLaunchWin = "Ready to send request to" ###################need change parseTable = dict() resultTable = dict() def InitParseTable(): parseTable[0] = dict() parseTable[1] = dict() parseTable[2] = dict() resultTable[0] = dict() resultTable[1] = dict() resultTable[2] = dict() resultTable[0]['Action'] = "ConnectToServer" resultTable[1]['Action'] = "LogInServer" resultTable[2]['Action'] = "LaunchWin" parseTable[0]['begin'] = beginConnect parseTable[0]['end'] = endConnect parseTable[1]['begin'] = beginLogin parseTable[1]['end'] = endLogin parseTable[2]['begin'] = beginLaunchWin parseTable[2]['end'] = endLaunchWin def GetTime(_pos, _count, content): strParse = content.split() timeParse = strParse[1].split('+') resultTable[_pos][_count] = timeParse[0] def RunJob(): fp = open(file_text,"r") content = fp.readline() _pos = 0 _count = 'begin' while content: if content.find(parseTable[_pos][_count]) >= 0: GetTime(_pos, _count, content) if _count == 'begin': _count = 'end' else: _count = 'begin' _pos = _pos + 1 if _pos > 2: break content = fp.readline() def CountTime(beginTime, endTime): b = beginTime.split(":") e = endTime.split(":") countTime = (int(e[0]) - int(b[0])) * 3600 + (int(e[1]) - int(b[1])) * 60 + round((float(e[2]) - float(b[2])), 3) return countTime def PrintResult(): for i in resultTable: resultTable[i]['during'] = CountTime(resultTable[i]['begin'], resultTable[i]['end']) print resultTable[i] def GenerateCSV(): csvfile = file('DuringTimeOfLog.csv', 'wb') writer = csv.writer(csvfile) writer.writerow(['Action', 'BeginTime', 'EndTime', 'DuringTime(seconds)']) for i in resultTable: row_data = [(resultTable[i]['Action'], resultTable[i]['begin'], resultTable[i]['end'], resultTable[i]['during'])] writer.writerows(row_data) csvfile.close() if __name__ == "__main__": InitParseTable() RunJob() PrintResult() GenerateCSV()