Login

another request logging middleware with request time and extra info

Author:
yoav
Posted:
December 11, 2011
Language:
Python
Version:
1.2
Tags:
middleware request-path time request logging time-logging
Score:
0 (after 0 ratings)

Simple logging middleware that captures the following: * remote address (whether proxied or direct) * if authenticated, then user email address * request method (GET/POST etc) * request full path * response status code (200, 404 etc) * content length * request process time * If DEBUG=True, also logs SQL query information - number of queries and how long they took

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import logging

class LoggingMiddleware(object):
    
    def process_request(self, request):
        self.start_time = time.time()

    def process_response(self, request, response):
        try:    
            remote_addr = request.META.get('REMOTE_ADDR')    
            if remote_addr in getattr(settings, 'INTERNAL_IPS', []):
                remote_addr = request.META.get('HTTP_X_FORWARDED_FOR') or remote_addr
            user_email = "-" 
            extra_log = ""
            if hasattr(request,'user'):
                user_email = getattr(request.user, 'email', '-')
            req_time = time.time() - self.start_time
            content_len = len(response.content)
            if settings.DEBUG:
                sql_time = sum(float(q['time']) for q in connection.queries) * 1000
                extra_log += " (%s SQL queries, %s ms)" % (len(connection.queries), sql_time)
            logging.info("%s %s %s %s %s %s (%.02f seconds)%s" % (remote_addr, user_email, request.method, request.get_full_path(), response.status_code, content_len, req_time, extra_log))
        except Exception, e:
            logging.error("LoggingMiddleware Error: %s" % e)
        return response

More like this

  1. SQL Log Middleware w/query count & exec time by tobias 8 years, 2 months ago
  2. Request time logging middleware by mpasternacki 5 years, 7 months ago
  3. Color SQL logging middleware by moe 7 years, 5 months ago
  4. logging tastypie middleware by lalutium 7 months, 3 weeks ago
  5. TerminalLoggingMiddleware by heckj 8 years, 1 month ago

Comments

pflanno (on July 30, 2012):

needs following imports

from django.conf import settings
from django.db import connection

import logging
import time

#

Please login first before commenting.