diff options
author | David Sommerseth <davids@redhat.com> | 2012-09-16 01:00:21 +0200 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2012-09-16 14:48:55 +0200 |
commit | a6893e56c1926c1365b5c217972b76c5491d51ae (patch) | |
tree | 7159202724bc3fe8913266a939efe320beb5386b /LogActio/Reporters/__init__.py | |
download | logactio-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__.py | 69 |
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) + |