[odl-sfc] Fix wait_for_vnf returning vnf_id on timeout
[functest.git] / functest / utils / functest_logger.py
old mode 100644 (file)
new mode 100755 (executable)
index c0fba08..0cba8c5
 #  logger = fl.Logger("script_name").getLogger()
 #  logger.info("message to be shown with - INFO - ")
 #  logger.debug("message to be shown with - DEBUG -")
-
 import logging
+import logging.config
 import os
 
+import json
 
-class Logger:
-    def __init__(self, logger_name):
+from functest.utils.constants import CONST
 
-        CI_DEBUG = os.getenv('CI_DEBUG')
 
+class Logger:
+    def __init__(self, logger_name):
+        self.setup_logging()
         self.logger = logging.getLogger(logger_name)
-        self.logger.propagate = 0
-        self.logger.setLevel(logging.DEBUG)
-
-        ch = logging.StreamHandler()
-        formatter = logging.Formatter('%(asctime)s - %(name)s - '
-                                      '%(levelname)s - %(message)s')
-        ch.setFormatter(formatter)
-        if CI_DEBUG is not None and CI_DEBUG.lower() == "true":
-            ch.setLevel(logging.DEBUG)
-            self.logger.parent.level = logging.DEBUG
-        else:
-            ch.setLevel(logging.INFO)
-            self.logger.parent.level = logging.INFO
-        self.logger.addHandler(ch)
-
-        hdlr = logging.FileHandler('/home/opnfv/functest/results/functest.log')
-        hdlr.setFormatter(formatter)
-        hdlr.setLevel(logging.DEBUG)
-        self.logger.addHandler(hdlr)
 
     def getLogger(self):
         return self.logger
+
+    def is_debug(self):
+        if CONST.CI_DEBUG and CONST.CI_DEBUG.lower() == "true":
+            return True
+        return False
+
+    def setup_logging(self, default_path=CONST.dir_functest_logging_cfg,
+                      default_level=logging.INFO,
+                      env_key='LOG_CFG'):
+        path = default_path
+        value = os.getenv(env_key, None)
+        if value:
+            path = value
+        if os.path.exists(path):
+            with open(path, 'rt') as f:
+                config = json.load(f)
+                if (config['handlers'] and
+                        config['handlers']['console']):
+                    stream_level = logging.INFO
+                    if self.is_debug():
+                        stream_level = logging.DEBUG
+                    config['handlers']['console']['level'] = stream_level
+                logging.config.dictConfig(config)
+        else:
+            logging.basicConfig(level=default_level)