sbsv2/raptor/bin/raptorlog.py
changeset 2 39c28ec933dd
child 13 c327db0664bb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv2/raptor/bin/raptorlog.py	Mon May 10 19:54:49 2010 +0100
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+	Raptor log parsing utilities.
+
+	Line-by-line based log reporting.
+"""
+
+import re
+
+
+class LogItem(object):
+	keep = False
+	def __init__(self, name, pattern, keep=False, subpattern=None):
+		self.name = name
+		self.matcher = re.compile(pattern, re.I)
+		self.count = 0
+
+		if subpattern:
+			self.subpattern = re.compile(subpattern,re.I)
+		else:
+			self.subpattern = None
+
+		if keep and LogItem.keep:
+			self.keep = {}
+		else:
+			self.keep = None
+
+		self.subpatterncount = 0
+
+	def xml(self):
+		xml = "<logitem name='%s' count='%i' subpatterncount='%i' " % ( self.name, self.count,  self.subpatterncount)
+		if self.keep == None:
+			return xml + " />"
+
+		xml += ">\n"
+
+		index = self.keep.keys()
+		index.sort(cmp=lambda y,x: self.keep[x] - self.keep[y])
+		for i in index:
+			xml += "<match count='" + str(self.keep[i]) +"'><![CDATA[\n" + i + "]]></match>\n"
+		
+		return xml + "</logitem>"
+
+	def match(self, line):
+		result = self.matcher.search(line)
+		if result != None:
+			if self.keep != None:
+				try:
+					self.keep[result.group()] += 1
+				except:
+					self.keep[result.group()] = 1
+			if self.subpattern != None:
+				self.subpatterncount += len(self.subpattern.findall(line))
+				for i in self.subpattern.findall(line):
+					print i
+			self.count += 1
+