summaryrefslogtreecommitdiffstats
path: root/ldap/admin/src/scripts/logregex.py
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/admin/src/scripts/logregex.py')
-rw-r--r--ldap/admin/src/scripts/logregex.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/ldap/admin/src/scripts/logregex.py b/ldap/admin/src/scripts/logregex.py
new file mode 100644
index 00000000..ac329227
--- /dev/null
+++ b/ldap/admin/src/scripts/logregex.py
@@ -0,0 +1,36 @@
+import sys
+import re
+import __main__ # to use globals
+
+# supports more than one regex - multiple regex are combined using AND logic
+# OR logic is easily supported with the '|' regex modifier
+regex_regex_ary = []
+buffer = []
+
+def pre(plgargs):
+ global regex_regex_ary
+ regexary = plgargs.get('regex', None)
+ if not regexary:
+ print "Error: missing required argument logregex.regex"
+ return False
+ if isinstance(regexary,list):
+ regex_regex_ary = [re.compile(xx) for xx in regexary]
+ else:
+ regex_regex_ary.append(re.compile(regexary))
+ return True
+
+def post():
+ global buffer
+ sys.stdout.writelines(buffer)
+ buffer = []
+
+def plugin(line):
+ global buffer
+ for rx in regex_regex_ary:
+ if not rx.search(line):
+ break # must match all regex
+ else: # all regexes matched
+ buffer.append(line)
+ if len(buffer) > __main__.maxlines:
+ del buffer[0]
+ return True