1 import os
2 import logging
3 import logging.config
4 from logging import Formatter
5 from tlib.base import TestHelper
6
7
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
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
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
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
58 folder = os.path.join(path, 'logs')
59 if os.path.exists(folder):
60 return folder
61
62 return None
63
64
65
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
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
81 logger = logging.getLogger(name)
82 logger.setLevel(logging.DEBUG)
83
84
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
92 formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
93 fh.setFormatter(formatter)
94
95 return logger
96