From dcbad73c6da008d8f62fef91d333da8fa66b56fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sven=20M=C3=A4der?= <maeder@phys.ethz.ch>
Date: Wed, 11 Apr 2018 00:46:25 +0200
Subject: [PATCH] Prepare for multiple loggers

---
 bin/deltalogparse.py | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/bin/deltalogparse.py b/bin/deltalogparse.py
index 5f4e678..d177d97 100755
--- a/bin/deltalogparse.py
+++ b/bin/deltalogparse.py
@@ -18,12 +18,23 @@ log_path = '/var/log/ldap/delta.log'
 search_base = 'cn=deltalog'
 object_classes = '(|(objectClass=auditModify)(objectClass=auditAdd)(objectClass=auditDelete))'
 
-logging.basicConfig(
-    filename='/var/log/ldap/deltalogparse.log',
-    level=loglevel,
-    format='%(asctime)s ' + process_name + '[%(process)d]:%(levelname)s: %(message)s',
+#logging.basicConfig(
+#    filename='/var/log/ldap/deltalogparse.log',
+#    level=loglevel,
+#    format='%(asctime)s ' + process_name + '[%(process)d]:%(levelname)s: %(message)s',
+#    datefmt='%Y-%m-%d %H:%M:%S'
+#)
+
+log = logging.getLogger('deltalogparse')
+log.setLevel(loglevel)
+log_fh = logging.FileHandler('/var/log/ldap/deltalogparse.log')
+log_fh.setLevel(loglevel)
+log_formatter = logging.Formatter(
+    fmt='%(asctime)s ' + process_name + '[%(process)d]:%(levelname)s: %(message)s',
     datefmt='%Y-%m-%d %H:%M:%S'
 )
+log_fh.setFormatter(log_formatter)
+log.addHandler(log_fh)
 
 rgx_skip = re.compile(
     r'^('
@@ -53,7 +64,7 @@ def is_skipped(attributes):
     return True
 
 
-def log(entry):
+def deltalog(entry):
     req_type = entry['attributes']['reqType'][0]
     req_dn = entry['attributes']['reqDN'][0]
 
@@ -61,8 +72,8 @@ def log(entry):
     entry['attributes'] = attributes
     del entry['raw_attributes']
 
-    logging.debug(pprint.pformat(entry, indent=4))
-    logging.info('log: %s %s' % (req_type, req_dn))
+    log.debug(pprint.pformat(entry, indent=4))
+    log.info('log: %s %s' % (req_type, req_dn))
 
 
 def sleep(start_time):
@@ -70,7 +81,7 @@ def sleep(start_time):
     elapsed_time = current_time - start_time
     sleep_time = update_every - elapsed_time
 
-    logging.info('runtime %0.3fs, sleeping %0.3fs' % (elapsed_time, sleep_time))
+    log.info('runtime %0.3fs, sleeping %0.3fs' % (elapsed_time, sleep_time))
 
     if sleep_time > 0:
         time.sleep(sleep_time)
@@ -90,9 +101,9 @@ def main():
         try:
             response = slapd.search(search_base, search_filter)
         except:
-            logging.error('socket error!')
+            log.error('socket error!')
             if slapd.reconnect():
-                logging.error('socket reconnected.')
+                log.error('socket reconnected.')
 
         if response:
             for entry in slapd.response():
@@ -103,15 +114,15 @@ def main():
                 req_type = entry['attributes']['reqType'][0]
                 req_dn = entry['attributes']['reqDN'][0]
 
-                logging.info(' '.join(['processing:', req_start, entry['dn']]))
+                log.info(' '.join(['processing:', req_start, entry['dn']]))
 
                 if req_type == 'modify':
                     req_mods = entry['attributes']['reqMod']
                     if is_skipped(req_mods):
-                        logging.info('skip: %s %s' % (req_type, req_dn))
+                        log.info('skip: %s %s' % (req_type, req_dn))
                         continue
 
-                log(entry)
+                deltalog(entry)
 
         sleep(start_time)
 
-- 
GitLab