Changeset - da39f9548758
[Not reviewed]
default
0 1 0
Mads Kiilerich - 6 years ago 2020-03-30 15:44:47
mads@kiilerich.com
middleware: HTTP status code logging in wrapper summaries
1 file changed with 4 insertions and 2 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/middleware/wrapper.py
Show inline comments
 
@@ -37,18 +37,20 @@ log = logging.getLogger(__name__)
 

	
 
class Meter:
 

	
 
    def __init__(self, start_response):
 
        self._start_response = start_response
 
        self._start = time.time()
 
        self.status = None
 
        self._size = 0
 

	
 
    def duration(self):
 
        return time.time() - self._start
 

	
 
    def start_response(self, status, response_headers, exc_info=None):
 
        self.status = status
 
        write = self._start_response(status, response_headers, exc_info)
 
        def metered_write(s):
 
            self.measure(s)
 
            write(s)
 
        return metered_write
 

	
 
@@ -74,13 +76,13 @@ class ResultIter:
 
        chunk = self._next()
 
        self._meter.measure(chunk)
 
        return chunk
 

	
 
    def close(self):
 
        self._result_close()
 
        log.info("%s responded after %.3fs with %s bytes", self._description, self._meter.duration(), self._meter.size())
 
        log.info("%s responded %r after %.3fs with %s bytes", self._description, self._meter.status, self._meter.duration(), self._meter.size())
 

	
 

	
 
class RequestWrapper(object):
 

	
 
    def __init__(self, app, config):
 
        self.application = app
 
@@ -92,8 +94,8 @@ class RequestWrapper(object):
 
            _get_ip_addr(environ),
 
            get_path_info(environ),
 
        )
 
        try:
 
            result = self.application(environ, meter.start_response)
 
        finally:
 
            log.info("%s responding after %.3fs", description, meter.duration())
 
            log.info("%s responding %r after %.3fs", description, meter.status, meter.duration())
 
        return ResultIter(result, meter, description)
0 comments (0 inline, 0 general)