diff --git a/src/service/clmcservice/aggregator.py b/src/service/clmcservice/aggregator.py index c4aadb5aa562cf076626d6193e19b2256178fbc1..1f796dd10f00333312b2e62fd60d7f6d90f3ce1e 100644 --- a/src/service/clmcservice/aggregator.py +++ b/src/service/clmcservice/aggregator.py @@ -28,7 +28,6 @@ from time import time, sleep from urllib.parse import urlparse from clmcservice.utilities import generate_e2e_delay_report import getopt -import sys import logging @@ -51,7 +50,7 @@ class Aggregator(object): """ if logger is None: - self.log = logging.getLogger('aggregator') + self.log = logging.getLogger(__name__) else: self.log = logger @@ -182,12 +181,27 @@ class Aggregator(object): if __name__ == '__main__': + # initialise a file logger, only when module's main method is run (NOT when aggregator class is imported somewhere else) 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) + log.setLevel(logging.DEBUG) + + # log all errors that are thrown in the execution of the aggregator with the logger object initialized above + import sys + import traceback + + def report_error(error_type, error_value, error_traceback, log_object=log): + log_object.error("Uncaught error thrown!") + log_object.error("Error type: {0}".format(error_type)) + log_object.error("Error value: {0}".format(error_value)) + log_object.debug("Error traceback:") + for trace in traceback.format_tb(error_traceback): + log_object.debug(trace) + + sys.excepthook = report_error # Parse command line options try: