[Repoze-checkins] r1084 - repoze.debug/trunk/repoze/debug

Chris McDonough chrism at agendaless.com
Fri Jun 13 18:59:13 EDT 2008


Author: Chris McDonough <chrism at agendaless.com>
Date: Fri Jun 13 18:59:13 2008
New Revision: 1084

Log:
Add max_bodylen.


Modified:
   repoze.debug/trunk/repoze/debug/responselogger.py
   repoze.debug/trunk/repoze/debug/tests.py

Modified: repoze.debug/trunk/repoze/debug/responselogger.py
==============================================================================
--- repoze.debug/trunk/repoze/debug/responselogger.py	(original)
+++ repoze.debug/trunk/repoze/debug/responselogger.py	Fri Jun 13 18:59:13 2008
@@ -5,8 +5,9 @@
 from paste.exceptions.errormiddleware import Supplement
 
 class ResponseLoggingMiddleware:
-    def __init__(self, app, logger):
+    def __init__(self, app, max_bodylen, logger):
         self.application = app
+        self.max_bodylen = max_bodylen
         self.logger = logger
 
     def __call__(self, environ, start_response):
@@ -85,7 +86,12 @@
         out.append('Bodylen: %s' % len(body))
         out.append('Body:')
         out.append('')
-        out.append(body)
+        bodyout = body
+        if self.max_bodylen:
+            bodyout = body[:self.max_bodylen]
+            if len(body) > self.max_bodylen:
+                bodyout += ' ... (truncated)'
+        out.append(bodyout)
         out.append('--- end RESPONSE %s ---' % request_id)
         self.logger.info('\n'.join(out))
         
@@ -118,18 +124,20 @@
 def make_middleware(app,
                     global_conf,
                     filename,
-                    max_bytes='100MB',
+                    max_bodylen='0KB', # all
+                    max_logsize='100MB',
                     backup_count='10',
                     ):
     """ Paste filter-app converter """
     backup_count = int(backup_count)
-    max_bytes = byte_size(max_bytes)
+    max_bytes = byte_size(max_logsize)
+    max_bodylen = byte_size(max_bodylen)
 
     from logging import Logger
     from logging.handlers import RotatingFileHandler
 
-    handler = RotatingFileHandler(filename, maxBytes=max_bytes,
+    handler = RotatingFileHandler(filename, maxBytes=max_logsize,
                                   backupCount=backup_count)
     logger = Logger('repoze.debug.responselogger')
     logger.handlers = [handler]
-    return ResponseLoggingMiddleware(app, logger)
+    return ResponseLoggingMiddleware(app, max_bodylen, logger)

Modified: repoze.debug/trunk/repoze/debug/tests.py
==============================================================================
--- repoze.debug/trunk/repoze/debug/tests.py	(original)
+++ repoze.debug/trunk/repoze/debug/tests.py	Fri Jun 13 18:59:13 2008
@@ -25,7 +25,7 @@
         body = ['thebody']
         app = DummyApp(body, '200 OK', [('HeaderKey', 'headervalue')])
         logger = FakeLogger()
-        mw = self._makeOne(app, logger)
+        mw = self._makeOne(app, 0, logger)
         environ = self._makeEnviron()
         start_response = FakeStartResponse()
         app_iter = mw(environ, start_response)
@@ -37,6 +37,18 @@
         self.assertEqual(start_response.exc_info, None)
         self.assertEqual(app.called, True)
 
+    def test_call_overmaxbodylen(self):
+        body = ['thebody']
+        app = DummyApp(body, '200 OK', [('HeaderKey', 'headervalue')])
+        logger = FakeLogger()
+        mw = self._makeOne(app, 1, logger)
+        environ = self._makeEnviron()
+        start_response = FakeStartResponse()
+        app_iter = mw(environ, start_response)
+        self.assertEqual(''.join(app_iter), 'thebody')
+        self.assertEqual(len(logger.logged), 2)
+        self.failUnless('(truncated)' in logger.logged[1])
+
 class TestMakeMiddleware(unittest.TestCase):
     def _getFUT(self):
         from repoze.debug.responselogger import make_middleware
@@ -50,6 +62,7 @@
         fn = tempfile.mktemp()
         mw = f(app, global_conf, fn)
         self.assertEqual(len(mw.logger.handlers), 1)
+        self.assertEqual(mw.max_bodylen, 0)
 
     def test_make_middleware_nondefaults(self):
         f = self._getFUT()


More information about the Repoze-checkins mailing list