summaryrefslogtreecommitdiffstats
path: root/LogActio/Reporters/__init__.py
diff options
context:
space:
mode:
authorDavid Sommerseth <davids@redhat.com>2012-09-16 01:00:21 +0200
committerDavid Sommerseth <davids@redhat.com>2012-09-16 14:48:55 +0200
commita6893e56c1926c1365b5c217972b76c5491d51ae (patch)
tree7159202724bc3fe8913266a939efe320beb5386b /LogActio/Reporters/__init__.py
downloadlogactio-a6893e56c1926c1365b5c217972b76c5491d51ae.tar.gz
logactio-a6893e56c1926c1365b5c217972b76c5491d51ae.tar.xz
logactio-a6893e56c1926c1365b5c217972b76c5491d51ae.zip
Initial import of logactio
This is the first step of the logactio framework Signed-off-by: David Sommerseth <davids@redhat.com>
Diffstat (limited to 'LogActio/Reporters/__init__.py')
-rw-r--r--LogActio/Reporters/__init__.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/LogActio/Reporters/__init__.py b/LogActio/Reporters/__init__.py
new file mode 100644
index 0000000..8b6d11b
--- /dev/null
+++ b/LogActio/Reporters/__init__.py
@@ -0,0 +1,69 @@
+#
+# logactio - simple framework for doing configured action on certain
+# log file events
+#
+# Copyright 2012 David Sommerseth <dazo@users.sourceforge.net>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# For the avoidance of doubt the "preferred form" of this code is one which
+# is in an open unpatent encumbered format. Where cryptographic key signing
+# forms part of the process of creating an executable the information
+# including keys needed to generate an equivalently functional executable
+# are deemed to be part of the source code.
+#
+
+import sys
+from LogActio import Message, ReporterQueue
+
+
+class DefaultReporter(ReporterQueue.ReporterQueue):
+ def __init__(self, config, logger = None):
+ self.__alertprefix = config.has_key('prefix') and config['prefix'] or "---> "
+ self.__log = logger
+ ReporterQueue.ReporterQueue.__init__(self,
+ "DefaultReporter",
+ "Default stdout reporter",
+ self.__processqueue)
+
+
+ def __processqueue(self):
+ done = False
+
+ # Process the message queue
+ while not done:
+ msg = self._QueueGet()
+
+ if( msg.MessageType() == Message.MSG_SHUTDOWN ):
+ # Prepare for shutdown
+ done = True
+
+ elif( msg.MessageType() == Message.MSG_SEND ):
+ if not self.__log:
+ print "[DefaultReporter] %s" % msg
+ sys.stdout.flush()
+ else:
+ self.__log(0, "[DefaultReporter] %s" % msg)
+
+
+ def ProcessEvent(self, logfile, prefix, msg, count, threshold):
+ # Format the report message
+ if msg is None:
+ msg = "%s [%s] %s (%s)" % (self.__alertprefix, logfile, prefix, count)
+ else:
+ msg = "%s [%s] %s (%s): %s" % (self.__alertprefix, logfile, prefix, count, msg)
+
+ # Queue the message for sending
+ self._QueueMsg(0, msg)
+