another request logging middleware with request time and extra info

 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 7 years ago
  2. Request time logging middleware by mpasternacki 4 years, 4 months ago
  3. Color SQL logging middleware by moe 6 years, 2 months ago
  4. TerminalLoggingMiddleware by heckj 6 years, 10 months ago
  5. Middelware to remember sql query log from before a redirect by miracle2k 6 years, 7 months ago

Comments

pflanno (on July 30, 2012):

needs following imports

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

import logging
import time

#

(Forgotten your password?)