''' Created by Deniz Turan Oracle Java (tested on 7), young generation garbage collection activity scraper. Extracts following fields from GC log file and save to a csv file. Count,LogTime,logGCOffsetTime,logGCOffsetTime2, YGPreSize,YGPostSize,YGTotalSize, YGElapsedTime, # Young generation OLDPreSize,OLDPostSize,OLDTotalSize,OLDElapsedTime # Old generation ''' from subprocess import call import glob import os logDir="C:\\temp\\gc\\" finalResultFileName=logDir+"finalResults.csv" filterExtension="*.log"; def getLogFileList(search_dir): files = filter(os.path.isfile, glob.glob(search_dir + filterExtension)) files.sort(key=lambda x: os.path.getmtime(x)) return files def openResultFile(): print "Creating result file : %s"% (finalResultFileName) # remove previous file call("rm "+finalResultFileName,shell=True) resultFileFD = open( finalResultFileName ,"a") ## create header resultFileFD.write("Count,LogTime,logGCOffsetTime,logGCOffsetTime2,") resultFileFD.write("YGPreSize,YGPostSize,YGTotalSize, YGElapsedTime,") resultFileFD.write("OLDPreSize,OLDPostSize,OLDTotalSize,OLDElapsedTime\n") return resultFileFD def closeResultFile(resultFileFD): print "Closing result file " resultFileFD.close(); def getFieldValue(strVal): index=strVal.index("K") index2=strVal.index("K", index+1) index3=strVal.index("K", index2+1) part1=strVal[:index] part2=strVal[index+3:index2] part3=strVal[index2+2:index3] return (part1,part2,part3) ##################################################### # Main ##################################################### if __name__ == '__main__': # prepare result file resultFileFD=openResultFile () print "Started to process log files" logFileList=getLogFileList(logDir) count=0 for f in logFileList: print "Processing GC Log file %s"%f logFD = open(f) line = logFD.readline() while (line != "" ): if "ParNew" in line : count=count+1 fields=line.split(" ") logTime=fields[0] logGCOffsetTime=fields[1] logGCOffsetTime2=fields[3] res=getFieldValue(fields[5]) YGPreSize,YGPostSize,YGTotalSize=res YGElapsedTime=fields[6] res=getFieldValue(fields[8]) OLDPreSize,OLDPostSize,OLDTotalSize=res OLDElapsedTime=fields[9] print line print "%d %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"%(count,logTime,logGCOffsetTime,logGCOffsetTime2, \ YGPreSize,YGPostSize,YGTotalSize, YGElapsedTime,\ OLDPreSize,OLDPostSize,OLDTotalSize,OLDElapsedTime) # print to file as CSV now resultFileFD.write("%d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"%(count,logTime,logGCOffsetTime,logGCOffsetTime2, \ YGPreSize,YGPostSize,YGTotalSize, YGElapsedTime,\ OLDPreSize,OLDPostSize,OLDTotalSize,OLDElapsedTime)) line = logFD.readline() continue logFD.close(); closeResultFile(resultFileFD); print "finished processing log files" pass
Friday, November 22, 2013
Java Garbage Collection Log File Scraper
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment