sky 发表于 2014-5-27 08:48:57

Python 解析日志生成excel报表

脚本功能包括:
1、解析日志,截取出需要的字段
2、生成excel报表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
'''
    This file is to parse during-timebetween some operations from log.
'''

import csv

file_path = "C:\\Users\\xxxxxx\\"
file_name = "xxxxxxx.txt"
file_text = file_path + file_name

beginConnect = " Enter ConnectToServer"
endConnect = "AuthDlg::OnInitDialog : Enter Init."

beginLogin = "AuthDlg::OnOk : Enter Windows_Password:Ok."
endLogin = "Notifying listener" ############need change

beginLaunchWin = "LaunchItem::Connect : Enter ConnectToItem"
endLaunchWin = "Ready to send request to" ###################need change

parseTable = dict()
resultTable = dict()

def InitParseTable():
    parseTable = dict()
    parseTable = dict()
    parseTable = dict()
   
    resultTable = dict()
    resultTable = dict()
    resultTable = dict()
   
    resultTable['Action'] = "ConnectToServer"
    resultTable['Action'] = "LogInServer"
    resultTable['Action'] = "LaunchWin"

    parseTable['begin'] = beginConnect
    parseTable['end'] = endConnect

    parseTable['begin'] = beginLogin
    parseTable['end'] = endLogin

    parseTable['begin'] = beginLaunchWin
    parseTable['end'] = endLaunchWin

def GetTime(_pos, _count, content):
    strParse = content.split()
    timeParse = strParse.split('+')
    resultTable = timeParse

def RunJob():
    fp = open(file_text,"r")
    content = fp.readline()
   
    _pos = 0
    _count = 'begin'
    while content:
      if content.find(parseTable) >= 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) - int(b)) * 3600 + (int(e) - int(b)) * 60 + round((float(e) - float(b)), 3)
    return countTime

def PrintResult():
    for i in resultTable:
      resultTable['during'] = CountTime(resultTable['begin'], resultTable['end'])
      print resultTable

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['Action'], resultTable['begin'], resultTable['end'], resultTable['during'])]
      writer.writerows(row_data)
    csvfile.close()


if __name__ == "__main__":
    InitParseTable()
    RunJob()
    PrintResult()
    GenerateCSV()



页: [1]
查看完整版本: Python 解析日志生成excel报表