--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pvl/syslog/filter.py Thu Jan 03 00:56:28 2013 +0200
@@ -0,0 +1,55 @@
+import logging; log = logging.getLogger('pvl.syslog.filter')
+
+class SyslogFilter (object) :
+ """
+ Filter syslog messages.
+ """
+
+ def __init__ (self, prog=None) :
+ """
+ prog - match tag (process name)
+ """
+
+ self.prog = prog
+
+ def match_prog (self, prog) :
+ """
+ Match given prog?
+ """
+
+ # normalize
+ prog = prog.lower()
+
+ if prog.startswith('/') :
+ # base
+ prog = prog.split('/')[-1]
+
+ # match
+ if not prog :
+ # never matches non-tagged lines
+ return False
+
+ elif self.prog.endswith('*') :
+ # prefix match
+ return prog.startswith(self.prog[:-1])
+
+ else :
+ return prog == self.prog
+
+ def filter (self, item) :
+ """
+ Match given item?
+ """
+
+ if self.prog and not self.match_prog(item['prog']) :
+ log.debug("prog: %s: %r", self.prog, item['prog'])
+
+ else :
+ # ok
+ return True
+
+ def __call__ (self, items) :
+ for item in items:
+ if self.filter(item) :
+ yield item
+