Change permissions of python files
[functest.git] / functest / utils / functest_logger.py
old mode 100644 (file)
new mode 100755 (executable)
index c0fba08..f09f56b
 #  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
+
+logger = logging.getLogger(__name__)
+
+
+def is_debug():
+    if CONST.CI_DEBUG and CONST.CI_DEBUG.lower() == "true":
+        return True
+    return False
 
-        CI_DEBUG = os.getenv('CI_DEBUG')
 
+def setup_logging(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 is_debug():
+                    stream_level = logging.DEBUG
+                config['handlers']['console']['level'] = stream_level
+            logging.config.dictConfig(config)
+    else:
+        logging.basicConfig(level=default_level)
+
+
+setup_logging()
+
+
+class Logger:
+    def __init__(self, logger_name):
         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