Merge "[odl-sfc] Add timeout to get_vnf_id and create_vnf functions"
[functest.git] / functest / utils / functest_logger.py
1 #!/usr/bin/env python
2 #
3 # jose.lausuch@ericsson.com
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Logging levels:
10 #  Level     Numeric value
11 #  CRITICAL  50
12 #  ERROR     40
13 #  WARNING   30
14 #  INFO      20
15 #  DEBUG     10
16 #  NOTSET    0
17 #
18 # Usage:
19 #  import functest_logger as fl
20 #  logger = fl.Logger("script_name").getLogger()
21 #  logger.info("message to be shown with - INFO - ")
22 #  logger.debug("message to be shown with - DEBUG -")
23 import logging
24 import logging.config
25 import os
26
27 import json
28
29 from functest.utils.constants import CONST
30
31
32 class Logger:
33     def __init__(self, logger_name):
34         self.setup_logging()
35         self.logger = logging.getLogger(logger_name)
36
37     def getLogger(self):
38         return self.logger
39
40     def is_debug(self):
41         if CONST.CI_DEBUG and CONST.CI_DEBUG.lower() == "true":
42             return True
43         return False
44
45     def setup_logging(self, default_path=CONST.dir_functest_logging_cfg,
46                       default_level=logging.INFO,
47                       env_key='LOG_CFG'):
48         path = default_path
49         value = os.getenv(env_key, None)
50         if value:
51             path = value
52         if os.path.exists(path):
53             with open(path, 'rt') as f:
54                 config = json.load(f)
55                 if (config['handlers'] and
56                         config['handlers']['console']):
57                     stream_level = logging.INFO
58                     if self.is_debug():
59                         stream_level = logging.DEBUG
60                     config['handlers']['console']['level'] = stream_level
61                 logging.config.dictConfig(config)
62         else:
63             logging.basicConfig(level=default_level)