脚本功能包括:

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