Log message for revision 96316: Merge r96315 from trunk: copy entry_id to the event log too
Changed: U Zope/branches/2.11/doc/CHANGES.txt U Zope/branches/2.11/lib/python/Products/SiteErrorLog/SiteErrorLog.py U Zope/branches/2.11/lib/python/Products/SiteErrorLog/tests/testSiteErrorLog.py -=- Modified: Zope/branches/2.11/doc/CHANGES.txt =================================================================== --- Zope/branches/2.11/doc/CHANGES.txt 2009-02-09 14:43:57 UTC (rev 96315) +++ Zope/branches/2.11/doc/CHANGES.txt 2009-02-09 14:52:36 UTC (rev 96316) @@ -6,6 +6,14 @@ Zope 2.11.3 (unreleased) + Features added + + - SiteErrorLog now includes the entry id in the information copied to + the event log. This allowes you to correlate a user error report with + the event log after a restart, or let's you find the REQUEST + information in the SiteErrorLog when looking at a traceback in the + event log. + Restructuring - Added 'InitializeClass' alias in 'App.class_init' to ease migration. Modified: Zope/branches/2.11/lib/python/Products/SiteErrorLog/SiteErrorLog.py =================================================================== --- Zope/branches/2.11/lib/python/Products/SiteErrorLog/SiteErrorLog.py 2009-02-09 14:43:57 UTC (rev 96315) +++ Zope/branches/2.11/lib/python/Products/SiteErrorLog/SiteErrorLog.py 2009-02-09 14:52:36 UTC (rev 96316) @@ -213,18 +213,18 @@ LOG.error('Error while logging', exc_info=sys.exc_info()) else: if self.copy_to_zlog: - self._do_copy_to_zlog(now,strtype,str(url),tb_text) + self._do_copy_to_zlog(now,strtype,entry_id,str(url),tb_text) return '%s/showEntry?id=%s' % (self.absolute_url(), entry_id) finally: info = None - def _do_copy_to_zlog(self,now,strtype,url,tb_text): + def _do_copy_to_zlog(self,now,strtype,entry_id,url,tb_text): when = _rate_restrict_pool.get(strtype,0) if now>when: next_when = max(when, now-_rate_restrict_burst*_rate_restrict_period) next_when += _rate_restrict_period _rate_restrict_pool[strtype] = next_when - LOG.error('%s\n%s' % (url, tb_text.rstrip())) + LOG.error('%s %s\n%s' % (entry_id, url, tb_text.rstrip())) security.declareProtected(use_error_logging, 'getProperties') def getProperties(self): Modified: Zope/branches/2.11/lib/python/Products/SiteErrorLog/tests/testSiteErrorLog.py =================================================================== --- Zope/branches/2.11/lib/python/Products/SiteErrorLog/tests/testSiteErrorLog.py 2009-02-09 14:43:57 UTC (rev 96315) +++ Zope/branches/2.11/lib/python/Products/SiteErrorLog/tests/testSiteErrorLog.py 2009-02-09 14:52:36 UTC (rev 96316) @@ -14,6 +14,7 @@ import sys import unittest +import logging class SiteErrorLogTests(unittest.TestCase): @@ -27,10 +28,18 @@ from Products.SiteErrorLog.SiteErrorLog import SiteErrorLog self.app._setObject('error_log', SiteErrorLog()) self.app.manage_addDTMLMethod('doc', '') + + self.logger = logging.getLogger('Zope.SiteErrorLog') + self.log = logging.handlers.BufferingHandler(sys.maxint) + self.logger.addHandler(self.log) + self.old_level = self.logger.level + self.logger.setLevel(logging.ERROR) except: self.tearDown() def tearDown(self): + self.logger.removeHandler(self.log) + self.logger.setLevel(self.old_level) transaction.abort() self.app._p_jar.close() @@ -121,6 +130,22 @@ # log entries self.assertEquals(len(sel_ob.getLogEntries()), previous_log_length) + def testEntryID(self): + elog = self.app.error_log + + # Create a predictable error + try: + raise AttributeError, "DummyAttribute" + except AttributeError: + info = sys.exc_info() + elog.raising(info) + + entries = elog.getLogEntries() + entry_id = entries[0]['id'] + + self.assertTrue(entry_id in self.log.buffer[-1].msg, + (entry_id, self.log.buffer[-1].msg)) + def testCleanup(self): # Need to make sure that the __error_log__ hook gets cleaned up self.app._delObject('error_log') _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins