From d7524954807ed63ed05762a945e7e6956c929eda Mon Sep 17 00:00:00 2001 From: Shwetha-H-Panduranga Date: Mon, 12 Dec 2011 11:21:16 +0530 Subject: Changes to logger class, Using the logger class in the framework, adding new global values, Changes made to argument parser, testruninfo --- libs/globals/logger.py | 206 +++++++++++++++---------------------------------- 1 file changed, 61 insertions(+), 145 deletions(-) (limited to 'libs/globals/logger.py') diff --git a/libs/globals/logger.py b/libs/globals/logger.py index 9d11bd7..1e7b4c0 100644 --- a/libs/globals/logger.py +++ b/libs/globals/logger.py @@ -1,30 +1,17 @@ """ 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 = [] - +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): """ @@ -49,163 +36,92 @@ class Log(): '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) + 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 - # 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'] + Returns: + Success: 0 + Failure: 1 + """ + loglevel = self.getLogLevel(loglevel) try: - summary_handler = logging.FileHandler(summarylog_abspath, mode='w') + summary_handler = logging.FileHandler(filename, mode) 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_formatter = logging.Formatter(self._summarylogformat) 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 + summary_handler.setLevel(loglevel) + self.addHandler(summary_handler) + self._handlers['summarylog'] = summary_handler + return 0 - def addDetaillogHandler(self, abspath, logname): + def addStdoutlogHandler(self, loglevel='INFO'): """ Description: - Add a Detail Log FileHandler to Logger with logname 'logname' + # 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 - Parameters: - logname: Name of the Logger + 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 """ - - 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'] - + loglevel = self.getLogLevel(loglevel) + try: - detail_handler = logging.FileHandler(abspath, mode='w') + detail_handler = logging.FileHandler(filename, 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.setLevel(loglevel) + detail_formatter = logging.Formatter(self._detaillogformat) 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") + self.addHandler(detail_handler) + self._handlers['detaillog'] = detail_handler return 0 - def removeDetaillogHandler(self, logname): + def removelogHandler(self, logname): """ Description: - Remove Detail Log File Handler from Logger with - logname 'logname' - + Remove LogHandler + Parameters: - logname: Name of the Logger + logname: Name of the Logger (summarylog/ detaillog/ stdoutlog) """ + if self._handlers.has_key(logname): + log_handler = log.pop(logname) + self.removeHandler(log_handler) - 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 + return 0 + +__all__ = ['Log'] -- cgit