Difference between revisions of "Item fix.py"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) (New page: <pre> #! /usr/bin/env python # # Purpose: Parse and display an informix log file # # $Id:$ # #--------------------------------------------------------------------- """ Parse Ben Lee's L...) |
(No difference)
|
Revision as of 18:40, 24 May 2008
#! /usr/bin/env python
#
# Purpose: Parse and display an informix log file
#
# $Id:$
#
#---------------------------------------------------------------------
"""
Parse Ben Lee's LR log files to show the underlying function
invocation sequence in the designated log file.
Another option shows timing of start of function.
Instructions for use:
1. You should change to the loadgen directory - the one containing the log files generated by Ben's code.
2. Run:
$ prune_log.py -t *.log
This produces a logs.sorted file contining the merged and sorted rewritten logs.
3. Then run:
$ time_line.py
This produces 'time_line.txt' which contains the time line and concurrency map.
"""
#---------------------------------------------------------------------
import re
import os
import sys
import glob
import time
import getopt
import pickle
#---------------------------------------------------------------------
__version__ = "1.0.0"
debugFlg = 0
stdoutFlg = 0
verboseFlg = 0
directoryFlg = None
filename = "x.lst"
mode = None
data = None
#---------------------------------------------------------------------
class Line:
Max_0 = 0
Max_1 = 0
def __init__(self, l):
self.flag = None
self.line = l
def __str__(self):
if self.flag:
s = ' ' * self.leading
s += self.split[0]
spacer = ' ' * (Line.Max_0 - len(self.split[0]) + 1)
s += spacer + self.split[1]
spacer = ' ' * (Line.Max_1 - len(self.split[1]) + 1)
s += spacer + self.split[2]
return s
else:
return self.line;
def leading(self, no):
self.leading = no
def split(self, p):
self.flag = 1
self.split = p
#---------------------------------------------------------------------
def startSeconds(s):
return time.mktime(time.strptime(s, "%Y-%m-%d %H:%M:%S"))
#---------------------------------------------------------------------
def seconds(hms):
s = hms.split(':')
return ((s[0] * 60) + s[1]) * 60 + s[2]
#---------------------------------------------------------------------
def hms(t_secs):
hm = t_secs / 60
hours = hm / 60
mins = hm % 60
secs = t_secs % 60
return "%02d:%02d:%02d" % ( hours, mins, secs)
#---------------------------------------------------------------------
def parse(filename):
global t_start
print filename
tmatch = re.search(r'(.*?).lst', filename)
if tmatch:
name = tmatch.group(1)
else:
name = filename + ".lst"
filename += ".lst"
outfile = name + ".out"
try:
ifo = open(filename, 'r')
except IOError, msg:
sys.stderr.write(filename + ': cannot open: ' + `msg` + '\n')
sys.exit(1)
try:
ofo = open(outfile, 'w')
except IOError, msg:
sys.stderr.write(outfile + ': cannot open: ' + `msg` + '\n')
sys.exit(1)
cnt = 0
max_0 = 0
max_1 = 0
lines = []
while 1:
line = ifo.readline()
if not line: break
line = line[:-1]
line = line.replace("\r","")
l = Line(line)
lines.append(l)
if re.search("^#", line):
continue
if re.search("^$", line):
continue
if re.search("^\r$", line):
continue
cnt += 1
tmatch = re.search("^ *([^ ]?)", line)
if tmatch:
ch = tmatch.group(1)
no_leading_spaces = line.index(ch)
l.leading(no_leading_spaces)
line = line[no_leading_spaces:]
p = line.split(' ')
len_0 = len(p[0])
if len_0 > max_0:
max_0 = len_0
len_1 = len(p[1])
if len_1 > max_1:
max_1 = len_1
l.split(p)
try:
print "[%s]" % str(p)
print >>ofo, "[%s]" % str(p)
except:
print "%s" % line
sys.exit(0)
print ":::::::::::::::::::::::::"
Line.Max_0 = max_0
Line.Max_1 = max_1
for i in range(len(lines)):
print lines[i]
ifo.close()
ofo.close()
print >>sys.stderr, "Processed %d lines" % cnt
#---------------------------------------------------------------------
def main():
global filename
global debugFlg
global stdoutFlg
global verboseFlg
try:
opts, args = getopt.getopt(sys.argv[1:], "df:vV?")
except getopt.error, msg:
print __doc__
return 1
for o, a in opts:
if o == '-d':
debugFlg = 1
elif o == '-f':
filename = a
elif o == '-v':
verboseFlg = 1
elif o == '-V':
print "Version: %s" % __version__
return 1
elif o == '-?':
print __doc__
return 1
if (debugFlg):
print ">> Flg %s" % debugFlg
parse(filename)
return 1
#---------------------------------------------------------------------
if __name__ == '__main__' or __name__ == sys.argv[0]:
sys.exit(main())
#---------------------------------------------------------------------
"""
Revision History:
Date Who Description
-------- --- --------------------------------------------------
20040812 plh Initial implementation
Problems to fix:
To Do:
Issues:
"""
"""
"Name=org.apache.struts.taglib.html.TOKEN", "Value={AgentisTOKEN}", ENDITEM,
"Name=panelControlMap_subFormName", "Value=QueueLinkMap", ENDITEM,
"Name=panelControlMap_panelName", "Value=null", ENDITEM,
"Name=MetaDataDrivenTagMap_tableName", "Value=0", ENDITEM,
"Name=MetaDataDrivenTagMap_columnName", "Value=0", ENDITEM,
"Name=MetaDataDrivenTagMap_recordNumber", "Value=0", ENDITEM,
"Name=MetaDataDrivenTagMap_agentId", "Value=0", ENDITEM,
"Name=", "Value=", ENDITEM,
"Name=", "Value=", ENDITEM,
"Name=ConfirmationActionForm_role", "Value=*UNKNOWN:role*", ENDITEM,
"Name=ConfirmationActionForm_token", "Value=*UNKNOWN:token*", ENDITEM,
"Name=ConfirmationActionForm_param1", "Value=*UNKNOWN:param1*", ENDITEM,
"Name=ConfirmationActionForm_param2", "Value=*UNKNOWN:param2*", ENDITEM,
"Name=QueueLinkMap_taskId", value_task, ENDITEM,
"Name=QueueLinkMap_requestId", "Value=", ENDITEM,
"Name=QueueLinkMap_awbNumber", "Value=", ENDITEM,
"Name=QueueLinkMap_queueLinkId", "Value=", ENDITEM,
"Name=QueueLinkMap_orgUnitName", "Value=", ENDITEM,
"Name=QueueLinkMap_orgUnitId", "Value=", ENDITEM,
"Name=BodyLinkMap_taskId", "Value=", ENDITEM,
"Name=BodyLinkMap_awbNumber", "Value=", ENDITEM,
"Name=BodyLinkMap_requestId", "Value=", ENDITEM,
"Name=BodyLinkMap_queueLinkId", "Value=", ENDITEM,
"""