Index: ldtp.py =================================================================== RCS file: /cvs/ldtp/ldtp/python/ldtp.py,v retrieving revision 1.46 diff -u -p -r1.46 ldtp.py --- ldtp.py 5 Dec 2006 06:26:45 -0000 1.46 +++ ldtp.py 14 Dec 2006 08:36:30 -0000 @@ -219,13 +219,13 @@ def generatexml (commandId, *args): if ldtpDebug != None: print str (commandId) + ' (', if argsLen >= 1: - _xml = _xml + '' + saxutils.escape(args[0]) + '' + _xml = _xml + '' + saxutils.escape (args [0]) + '' if commandId != command.INITAPPMAP and argsLen >= 2: - _xml = _xml + '' + saxutils.escape(args[1]) + '' + _xml = _xml + '' + saxutils.escape (args [1]) + '' if ldtpDebug != None: print args[1], if argsLen >= 3: - _xml = _xml + '' + saxutils.escape(args[2]) + '' + _xml = _xml + '' + saxutils.escape (args [2]) + '' if ldtpDebug != None: print ', ' + args[2], if argsLen >= 4: @@ -835,7 +835,9 @@ LDTP_LOG_MEMINFO = 73 LDTP_LOG_CPUINFO = 74 LDTP_LOG_TESTCASESTART = 75 LDTP_LOG_TESTCASEEND = 76 -LDTP_LOG_TESTCASESTATUS = 75 +LDTP_LOG_TESTCASESTATUS = 77 +LDTP_LOG_STARTTAG = 78 +LDTP_LOG_STOPTAG = 79 logging.addLevelName (LDTP_LOG_TESTSTART, 'TESTSTART') logging.addLevelName (LDTP_LOG_TESTEND, 'TESTEND') @@ -854,6 +856,8 @@ logging.addLevelName (LDTP_LOG_SCRIPTSTA logging.addLevelName (LDTP_LOG_SCRIPTEND, 'SCRIPTEND') logging.addLevelName (LDTP_LOG_MEMINFO, 'MEMINFO') logging.addLevelName (LDTP_LOG_CPUINFO, 'CPUINFO') +logging.addLevelName (LDTP_LOG_STARTTAG, 'STARTTAG') +logging.addLevelName (LDTP_LOG_STOPTAG, 'STOPTAG') class state: INVALID = 0 @@ -2231,6 +2235,55 @@ def setloglevel (level): else: return 0 +currentPyVersion = sys.version +regexp = re.compile ('2.5', re.IGNORECASE) +class LdtpLogRecord (logging.LogRecord): + """ + LogRecord subclass that stores a unique -- transaction -- time + as an additional attribute + """ + def __init__ (self, name, level, pathname, lineno, msg, args, exc_info): + if level == LDTP_LOG_STARTTAG: + msg = '<' + msg + '>' + elif level == LDTP_LOG_STOPTAG: + msg = '' + else: + msg = '<' + logging.getLevelName (level) +'>' + saxutils.escape (msg) + '' + if regexp.search (currentPyVersion) == None: + logging.LogRecord.__init__ (self, name, level, pathname, lineno, msg, args, exc_info) + else: + logging.LogRecord.__init__ (self, name, level, pathname, lineno, msg, args, exc_info, None) + +if regexp.search (currentPyVersion) == None: + def makeRecord (name, level, fn, lno, msg, args, exc_info, func = None, extra = None): + if type (level) != int and len (msg) == 0: + exc_info = args + args = msg + msg = lno + lno = fn + fn = level + level = name + name = logging.getLogger ('XML').name + return LdtpLogRecord (name, level, fn, lno, msg, args, exc_info) +else: + def makeRecord (self, name, level, fn, lno, msg, args, exc_info, func = None, extra = None): + if type (level) != int and len (msg) == 0: + exc_info = args + args = msg + msg = lno + lno = fn + fn = level + level = name + name = logging.getLogger ('XML').name + return LdtpLogRecord (name, level, fn, lno, msg, args, exc_info) + +class LdtpLogger (logging.Logger): + """ + Logger subclass that uses CustomLogRecord as its LogRecord class + """ + def __init__ (self, name, level=logging.NOTSET): + logging.Logger.__init__ (self, name, level) + def startlog (logFileName, fileOverWrite = 1): """ Start logging on the specified file. second arugment is optional and 1 is default value 0 - Append log to an existing file @@ -2247,17 +2300,24 @@ def startlog (logFileName, fileOverWrite try: global xmlhdlr, logger + logging.setLoggerClass (LdtpLogger) logger = logging.getLogger ('XML') xmlLogMode = 'w' if fileOverWrite == 0: xmlLogMode = 'a' - xmlhdlr = logging.FileHandler (logFileName, xmlLogMode) + try: + xmlhdlr = logging.FileHandler (logFileName, xmlLogMode) + except IOError: + pass # Format we want to log - FORMAT = "<%(levelname)s>%(message)s" - formatter = logging.Formatter (FORMAT) - xmlhdlr.setFormatter (formatter) + #FORMAT = "<%(levelname)s>%(message)s" + #formatter = logging.Formatter (FORMAT) + #xmlhdlr.setFormatter (formatter) logger.addHandler (xmlhdlr) logger.setLevel (logging.WARNING) + logger.makeRecord = makeRecord + if fileOverWrite == 1: + logger.log (LDTP_LOG_STARTTAG, 'ldtp') return 1 except LdtpExecutionError, msg: @@ -2341,6 +2401,7 @@ def stoplog (handler = None): if handler != None: logger.removeHandler (handler) elif xmlhdlr != None: + logger.log (LDTP_LOG_STOPTAG, 'ldtp') logger.removeHandler (xmlhdlr) else: print "DEBUG ********"