summaryrefslogtreecommitdiffstats
path: root/libs/globals/logger.py
blob: 68ce53b2337eec462017c7ae4439f97692f85840 (plain)
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 = self._handlers.pop(logname)
            self.removeHandler(log_handler)              

        return 0
    
    
__all__ = ['Log']