--- /dev/null
+#----------------------------------------------------------------------------
+# Name: aglogging.py
+# Purpose: Utilities to help with logging
+#
+# Author: Jeff Norton
+#
+# Created: 01/04/05
+# CVS-ID: $Id$
+# Copyright: (c) 2005 ActiveGrid, Inc.
+# License: wxWindows License
+#----------------------------------------------------------------------------
+
+import sys
+import os
+import re
+import traceback
+
+global agTestMode
+agTestMode = False
+
+def setTestMode(mode):
+ global agTestMode
+ if (mode):
+ agTestMode = True
+ else:
+ agTestMode = False
+
+def getTestMode():
+ global agTestMode
+ return agTestMode
+
+def testMode(normalObj, testObj=None):
+ if getTestMode():
+ return testObj
+ return normalObj
+
+def toDiffableString(value):
+ s = repr(value)
+ ds = ""
+ i = s.find(" at 0x")
+ start = 0
+ while (i >= 0):
+ j = s.find(">", i)
+ if (j < i):
+ break
+ ds += s[start:i]
+ start = j
+ i = s.find(" at 0x", start)
+ return ds + s[start:]
+
+def removeFileRefs(str):
+ str = re.sub(r'(?<=File ")[^"]*(\\[^\\]*")(, line )[0-9]*', _fileNameReplacement, str)
+ return str
+
+def _fileNameReplacement(match):
+ return "...%s" % match.group(1)
+
+def getTraceback():
+ extype, val, tb = sys.exc_info()
+ tbs = "\n"
+ for s in traceback.format_tb(tb):
+ tbs += s
+ return tbs
+
+def reportException(out=None, stacktrace=False, diffable=False):
+ extype, val, t = sys.exc_info()
+ if (diffable):
+ exstr = removeFileRefs(str(val))
+ else:
+ exstr = str(val)
+ if (out == None):
+ print "Got Exception = %s: %s" % (extype, exstr)
+ else:
+ print >> out, "Got Exception = %s: %s" % (extype, exstr)
+ if (stacktrace):
+ fmt = traceback.format_exception(extype, val, t)
+ for s in fmt:
+ if (diffable):
+ s = removeFileRefs(s)
+ if (out == None):
+ print s
+ else:
+ print >> out, s
+