[Erp5-report] r22965 - /erp5/trunk/products/CMFActivity/ActivityTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Aug 11 18:22:24 CEST 2008


Author: vincent
Date: Mon Aug 11 18:22:24 2008
New Revision: 22965

URL: http://svn.erp5.org?rev=22965&view=rev
Log:
Store creation-time traceback in Message class to make it easier to track where activities come from.

Modified:
    erp5/trunk/products/CMFActivity/ActivityTool.py

Modified: erp5/trunk/products/CMFActivity/ActivityTool.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/ActivityTool.py?rev=22965&r1=22964&r2=22965&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/ActivityTool.py (original)
+++ erp5/trunk/products/CMFActivity/ActivityTool.py Mon Aug 11 18:22:24 2008
@@ -63,6 +63,11 @@
   def getTimerService(self):
     pass
 
+try:
+  from traceback import format_list, extract_stack
+except ImportError:
+  format_list = extract_stack = None
+
 # minimal IP:Port regexp
 NODE_RE = re.compile('^\d+\.\d+\.\d+\.\d+:\d+$')
 
@@ -138,6 +143,13 @@
     self.exc_type = None
     self.exc_value = None
     self.traceback = None
+    if format_list is None:
+      self.call_traceback = None
+    else:
+      # Save current traceback, to make it possible to tell where a message
+      # was generated.
+      # Strip last stack entry, since it will always be the same.
+      self.call_traceback = ''.join(format_list(extract_stack()[:-1]))
     self.processing = None
     self.user_name = str(_getAuthenticatedUser(self))
     # Store REQUEST Info
@@ -244,8 +256,8 @@
         self.is_executed = MESSAGE_NOT_EXECUTED
         exc_info = sys.exc_info()
         LOG('ActivityTool', WARNING,
-            'Could not call method %s on object %s' % (
-            self.method_id, self.object_path), error=exc_info)
+            'Could not call method %s on object %s. Activity created at:\n%s' % (
+            self.method_id, self.object_path, self.call_traceback), error=exc_info)
         # push the error in ZODB error_log
         if getattr(activity_tool, 'error_log', None) is not None:
           activity_tool.error_log.raising(exc_info)
@@ -277,11 +289,15 @@
 Method: %s
 Arguments:%r
 Named Parameters:%r
+Created at:
+%s
+
 Exception: %s %s
 
 %s
 """ % (activity_tool.email_from_address, user_email, message,
        message, '/'.join(self.object_path), self.method_id, self.args, self.kw,
+       self.call_traceback,
        self.exc_type, self.exc_value, self.traceback)
     try:
       activity_tool.MailHost.send( mail_text )




More information about the Erp5-report mailing list