From 4399cf4d161526300244d8cf090a461c792ab82e Mon Sep 17 00:00:00 2001 From: Shwetha-H-Panduranga Date: Wed, 7 Dec 2011 11:56:48 +0530 Subject: Renaming Directories --- libs/globals/logger.py | 211 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 libs/globals/logger.py (limited to 'libs/globals/logger.py') diff --git a/libs/globals/logger.py b/libs/globals/logger.py new file mode 100644 index 0000000..9d11bd7 --- /dev/null +++ b/libs/globals/logger.py @@ -0,0 +1,211 @@ +""" + logger class contains variables and methods for Logging + the events during the test run. + + Variables: + SummaryLog: [filename, loglevel, format] + + DetailLog: [filename, loglevel, format] + + StdoutLog: [loglevel, format] + +""" +import logging + +class Log(): + + def __init__(self): + self._summarylog = {'format': + '%(asctime)s %(levelname)s : %(filename)s %(lineno)d - \ + \'%(message)s\''} + self._detaillog = {'format': + '%(asctime)s %(levelname)s : %(pathname)s %(funcName)s \ + %(lineno)d - \'%(message)s\''} + self._stdoutlog = {'logstatus':'false', 'format':'%(asctime)s \ + %(levelname)s : %(filename)s %(lineno)d - \'%(message)s\''} + self._loggers = [] + + + 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 setSummaryLog(self, filename='SummaryLog.out', loglevel='INFO'): + """ + Description: + Set Summary Log Name and Log Level + + Parameters: + filename: SummaryLog File Name + loglevel : Log level to be set for summary log + """ + + self._summarylog['filename'] = filename + self._summarylog['loglevel'] = self.getLogLevel(loglevel) + + def setDetailLog(self, filename='DetailLog.out', loglevel = 'DEBUG'): + """ + Description: + Set Detail Log Name and Log Level + + Parameters: + filename: DetailLog FIle name + loglevel: Log level to be set for detail log + """ + + self._detaillog['filename'] = filename + self._detaillog['loglevel'] = self.getLogLevel(loglevel) + + def setStdoutLog(self, do_log=True, loglevel='INFO'): + """ + Description: + Set Log Level for logging to STDOUT + + Parameters: + loglevel: Log level for logging to STDOUT + """ + self._stdoutlog['do_log'] = do_log + self._stdoutlog['loglevel'] = self.getLogLevel(loglevel) + + def createLogger(self, atfdir, logname='ATFLOG'): + """ + Description: + Create a Logger with LogName 'logname' + + Parameters: + logname: Name of the Logger + + Return: + Success: 0 (Successful creation of logger with name : 'logname') + Failure: 1 (Unable to create logger with name: logname) + """ + + # Create a Logger Object with name "logname". + # Set the log level to 'DEBUG' + logger = logging.getLogger(logname) + logger.setLevel(logging.DEBUG) + self.loggers.append({'logname': logname}) + + # Create Summary Log File Handler + # Set the Log Level + # Set the Log Record format for Summary Log + summarylog_abspath = atfdir + "/" + self._summarylog['filename'] + try: + summary_handler = logging.FileHandler(summarylog_abspath, mode='w') + + except IOError as (errno, errstr): + print "I/0 error({0}): {1}".format(errno, errstr) + return 1 + + else: + summary_formatter = logging.Formatter(self._summarylog['format']) + summary_handler.setFormatter(summary_formatter) + summary_handler.setLevel(self._summarylog['loglevel']) + logger.addHandler(summary_handler) + for log in self._loggers: + if log['logname'] == logname: + log['summary_handler'] = summary_handler + break + + # Create Stdout Log StreamHandler if log to stdout is defined + # Set the Log Level + # Set the Log Record format for STDOUT + if self._stdoutlog['do_log'] == 'true': + stdout_handler = logging.StreamHandler() + stdout_handler.setLevel(self._stdoutlog['loglevel']) + stdout_formatter = logging.Formatter(self._stdoutlog['format']) + stdout_handler.setFormatter(stdout_formatter) + logger.addHandler(stdout_handler) + for log in self._loggers: + if log['logname'] == logname: + log['stdout_handler'] = stdout_handler + break + return 0 + + def addDetaillogHandler(self, abspath, logname): + """ + Description: + Add a Detail Log FileHandler to Logger with logname 'logname' + + Parameters: + logname: Name of the Logger + + Returns: + Success: 0 + Failure: 1 + """ + + logger = logging.getLogger(logname) + + # Create Detail Log File Handler + # Set the Log Level + # Set the Log Record format for Detail Log + abspath = abspath + self._detaillog['filename'] + + try: + detail_handler = logging.FileHandler(abspath, mode='w') + + except IOError as (errno, errstr): + logger.error("IOError ({0}): {1}".format(errno, errstr)) + return 1 + + else: + detail_handler.setLevel(self._detaillog['loglevel']) + detail_formatter = logging.Formatter(self._detaillog['format']) + detail_handler.setFormatter(detail_formatter) + logger.addHandler(detail_handler) + + for log in self._loggers: + if log['logname'] == logname: + log['detail_handler'] = detail_handler + break + + logger.debug("Detail Log File Handler Successfully Added") + + return 0 + + def removeDetaillogHandler(self, logname): + """ + Description: + Remove Detail Log File Handler from Logger with + logname 'logname' + + Parameters: + logname: Name of the Logger + """ + + logger = logging.getLogger(logname) + Map = {} + for log in self._loggers: + Map = log + + if Map.has_key('detail_handler'): + detail_handler = log.pop('detail_handler') + logger.removeHandler(detail_handler) + logger.info("DetailLog Handler Removed for the Logger: " + + logname) + else: + logger.warning("DetailLog Handler Not Found for the Logger: " + + logname) + return + -- cgit