From ea8ab9fe02835310b2992035149bdcced8cd2170 Mon Sep 17 00:00:00 2001
From: Nikolay Stanchev <ns17@it-innovation.soton.ac.uk>
Date: Fri, 1 Jun 2018 19:09:11 +0100
Subject: [PATCH] Slight update to logging in aggregator

---
 src/service/clmcservice/aggregator.py | 39 ++++++++++++++-------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/src/service/clmcservice/aggregator.py b/src/service/clmcservice/aggregator.py
index ec53ef0..c4aadb5 100644
--- a/src/service/clmcservice/aggregator.py
+++ b/src/service/clmcservice/aggregator.py
@@ -32,14 +32,6 @@ import sys
 import logging
 
 
-log = logging.getLogger('aggregator')
-hdlr = logging.FileHandler('/var/log/clmcservice/aggregator.log', mode='a')
-formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
-hdlr.setFormatter(formatter)
-log.addHandler(hdlr)
-log.setLevel(logging.INFO)
-
-
 class Aggregator(object):
     """
     A class used to perform the aggregation feature of the CLMC - aggregating network and media service measurements. Implemented as a separate process.
@@ -49,7 +41,7 @@ class Aggregator(object):
     DATABASE = 'CLMCMetrics'  # default database the aggregator uses
     DATABASE_URL = 'http://172.40.231.51:8086'  # default database URL the aggregator uses
 
-    def __init__(self, database_name=DATABASE, database_url=DATABASE_URL, report_period=REPORT_PERIOD):
+    def __init__(self, database_name=DATABASE, database_url=DATABASE_URL, report_period=REPORT_PERIOD, logger=None):
         """
         Constructs an Aggregator instance.
 
@@ -58,11 +50,16 @@ class Aggregator(object):
         :param report_period: the report period in seconds
         """
 
-        log.info("Connecting to Influx database {0} with URL {1}".format(database_name, database_url))
+        if logger is None:
+            self.log = logging.getLogger('aggregator')
+        else:
+            self.log = logger
+
+        self.log.info("Connecting to Influx database {0} with URL {1}".format(database_name, database_url))
         # initialise a database client using the database url and the database name
         url_object = urlparse(database_url)
         self.db_client = InfluxDBClient(host=url_object.hostname, port=url_object.port, database=database_name, timeout=10)
-        log.info("Successfully connected to Influx database {0} with URL {1}".format(database_name, database_url))
+        self.log.info("Successfully connected to Influx database {0} with URL {1}".format(database_name, database_url))
 
         self.db_url = database_url
         self.db_name = database_name
@@ -80,7 +77,7 @@ class Aggregator(object):
         Stop the aggregator from running.
         """
 
-        log.info("Aggregator's stop flag has been set.")
+        self.log.info("Aggregator's stop flag has been set.")
         self._stop_flag.set()
 
     def run(self):
@@ -88,11 +85,11 @@ class Aggregator(object):
         Performs the functionality of the aggregator - query data from both measurements merge that data and post it back in influx every 5 seconds.
         """
 
-        log.info("Aggregator started running.")
+        self.log.info("Aggregator started running.")
 
         current_time = int(time())
         while not self._stop_flag.is_set():
-            log.info("Trying to generate an E2E measurement.")
+            self.log.info("Trying to generate an E2E measurement.")
 
             boundary_time = current_time - self.report_period
 
@@ -171,9 +168,9 @@ class Aggregator(object):
                                                   e2e_arguments['delay_service'],
                                                   e2e_arguments["avg_request_size"], e2e_arguments['avg_response_size'], e2e_arguments['avg_bandwidth'],
                                                   e2e_arguments['time']))
-                    log.info("Successfully generated an E2E measurement and posted back to Influx.")
+                    self.log.info("Successfully generated an E2E measurement and posted back to Influx.")
                 else:
-                    log.info("Couldn't generate an E2E measurement although some of the data could be fetched.")
+                    self.log.info("Couldn't generate an E2E measurement although some of the data could be fetched.")
 
             old_timestamp = current_time
             # wait until {report_period) seconds have passed
@@ -181,10 +178,16 @@ class Aggregator(object):
                 sleep(1)
                 current_time = int(time())
 
-        log.info("Aggregator stopped running.")
+        self.log.info("Aggregator stopped running.")
 
 
 if __name__ == '__main__':
+    log = logging.getLogger('aggregator')
+    hdlr = logging.FileHandler('/var/log/clmcservice/aggregator.log', mode='a')
+    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+    hdlr.setFormatter(formatter)
+    log.addHandler(hdlr)
+    log.setLevel(logging.INFO)
 
     # Parse command line options
     try:
@@ -203,7 +206,7 @@ if __name__ == '__main__':
             elif opt in ('-u', '--url'):
                 arg_database_url = arg
 
-        Aggregator(database_name=arg_database_name, database_url=arg_database_url, report_period=arg_period).run()
+        Aggregator(database_name=arg_database_name, database_url=arg_database_url, report_period=arg_period, logger=log).run()
 
     # log.info the error messages in case of a parse error
     except getopt.GetoptError as err:
-- 
GitLab