Package tlib :: Package base :: Module LogHelper
[hide private]
[frames] | no frames]

Source Code for Module tlib.base.LogHelper

 1  import os 
 2  import logging 
 3  import logging.config 
 4  from logging import Formatter 
 5  from tlib.base import TestHelper 
 6   
 7   
8 -def get_tlib_logger(request=None):
9 """ 10 Returns logger named tlib.\n 11 This logger should only be used by TLib modules. To log from a test or test module use get_test_logger\n 12 Logger will get flushed at the end to ensure data is not lost if tests exits abnormally 13 :param request 14 """ 15 if request is None: 16 return get_logger(name="tlib") 17 else: 18 return get_logger(path=request.fspath.strpath, name="tlib")
19 20
21 -def get_adb_logger(request=None):
22 """ 23 Returns logger named adb.\n 24 This logger should only be used by adb modules. To log from a test or test module use get_test_logger\n 25 Logger will get flushed at the end to ensure data is not lost if tests exits abnormally 26 """ 27 if request is None: 28 return get_logger(name="adb") 29 else: 30 return get_logger(path=request.fspath.strpath, name="adb")
31
32 -def get_test_logger(request=None):
33 """ 34 Returns logger named test.\n 35 This logger should only be used by test modules. To log from a test or test module use get_test_logger\n 36 Logger will get flushed at the end to ensure data is not lost if tests exits abnormally 37 """ 38 if request is None: 39 return get_logger(name="test") 40 else: 41 return get_logger(path=request.fspath.strpath, name="test")
42
43 -def get_logger(path=None, name=None):
44 """ 45 Returns a logger that has a console and a file handler.\n 46 47 @param name: Logger to return 48 @type name: str 49 @return: 50 """ 51 52 def find_log_folder(path): 53 log_folder = None 54 for i in range(1, 10): 55 path = os.path.abspath(os.path.join(path, os.pardir)) 56 57 #Check if there is a folder 'logs' 58 folder = os.path.join(path, 'logs') 59 if os.path.exists(folder): 60 return folder 61 62 return None
63 64 # find location of .log file 65 #Go up to three levels to find log folder. Search starts in current directory 66 if name is None: 67 raise ValueError("Didn't provide a logger name") 68 69 70 log_folder = None 71 if path is None: 72 log_folder = find_log_folder(os.path.dirname(__file__)) or find_log_folder(os.path.abspath(os.path.curdir)) 73 # path = os.path.dirname(__file__) 74 else: 75 log_folder = find_log_folder(path) 76 77 if log_folder is None: 78 raise IOError("Couldn't find folder 'logs'. Create it under your project folder and try again") 79 80 #Create logger 81 logger = logging.getLogger(name) 82 logger.setLevel(logging.DEBUG) 83 84 #Add a file handler 85 if not logger.handlers: 86 fh = logging.FileHandler(os.path.join(log_folder, 'test.log')) 87 logger.addHandler(fh) 88 logger.propagate = 0 89 fh.setLevel(logging.DEBUG) 90 91 #Set log format 92 formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 93 fh.setFormatter(formatter) 94 95 return logger 96