1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
"""
logger class contains variables and methods for Logging
the events during the test run.
"""
import logging
class Log(logging.Logger):
_summarylogformat = '%(asctime)s %(levelname)s : %(filename)s %(lineno)d - \'%(message)s\''
_detaillogformat = '%(asctime)s %(levelname)s : %(pathname)s %(funcName)s %(lineno)d - \'%(message)s\''
_stdoutlogformat = '%(asctime)s %(levelname)s : %(filename)s %(lineno)d - \'%(message)s\''
_handlers = {}
def getLogLevel(self, loglevel):
"""
Description:
Returns logging.(LogLevel) for loglevel
Parameters:
loglevel: String specifying the loglevel
Returns:
logging.(Loglevel)
"""
LEVELS = {'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL,
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL}
return LEVELS.get(loglevel, logging.NOTSET)
def addSummarylogHandler(self, filename, loglevel='INFO', mode='w'):
"""
Description:
# Create Summary Log File Handler
# Set the Log Level
# Set the Log Record format for Summary Log
Returns:
Success: 0
Failure: 1
"""
loglevel = self.getLogLevel(loglevel)
try:
summary_handler = logging.FileHandler(filename, mode)
except IOError as (errno, errstr):
return 1
else:
summary_formatter = logging.Formatter(self._summarylogformat)
summary_handler.setFormatter(summary_formatter)
summary_handler.setLevel(loglevel)
self.addHandler(summary_handler)
self._handlers['summarylog'] = summary_handler
return 0
def addStdoutlogHandler(self, loglevel='INFO'):
"""
Description:
# Create Stdout Log StreamHandler
# Set the Log Level
# Set the Log Record format for STDOUT
"""
loglevel = self.getLogLevel(loglevel)
stdout_handler = logging.StreamHandler()
stdout_handler.setLevel(loglevel)
stdout_formatter = logging.Formatter(self._stdoutlogformat)
stdout_handler.setFormatter(stdout_formatter)
self.addHandler(stdout_handler)
self._handlers['stdoutlog'] = stdout_handler
return 0
def addDetaillogHandler(self, filename, loglevel='DEBUG', mode='w'):
"""
Description:
#Add a Detail Log FileHandler
#Set Log Level
#Set Log Record format for DetailLog
Returns:
Success: 0
Failure: 1
"""
loglevel = self.getLogLevel(loglevel)
try:
detail_handler = logging.FileHandler(filename, mode='w')
except IOError as (errno, errstr):
return 1
else:
detail_handler.setLevel(loglevel)
detail_formatter = logging.Formatter(self._detaillogformat)
detail_handler.setFormatter(detail_formatter)
self.addHandler(detail_handler)
self._handlers['detaillog'] = detail_handler
return 0
def removelogHandler(self, logname):
"""
Description:
Remove LogHandler
Parameters:
logname: Name of the Logger (summarylog/ detaillog/ stdoutlog)
"""
if self._handlers.has_key(logname):
log_handler = log.pop(logname)
self.removeHandler(log_handler)
return 0
__all__ = ['Log']
|