Adding elapsed time to all requests logging.

This commit is contained in:
Samuel Clay 2012-07-13 14:56:12 -07:00
parent 803278bb08
commit cdf42f323e
4 changed files with 16 additions and 4 deletions

View file

@ -1,6 +1,7 @@
import datetime import datetime
import re import re
import random import random
import time
from utils import log as logging from utils import log as logging
from django.conf import settings from django.conf import settings
from django.db import connection from django.db import connection
@ -29,7 +30,7 @@ class LastSeenMiddleware(object):
class SQLLogToConsoleMiddleware: class SQLLogToConsoleMiddleware:
def process_response(self, request, response): def process_response(self, request, response):
if settings.DEBUG and connection.queries: if settings.DEBUG and connection.queries:
time = sum([float(q['time']) for q in connection.queries]) time_elapsed = sum([float(q['time']) for q in connection.queries])
queries = connection.queries queries = connection.queries
for query in queries: for query in queries:
if query.get('mongo'): if query.get('mongo'):
@ -41,7 +42,7 @@ class SQLLogToConsoleMiddleware:
query['sql'] = re.sub(r'UPDATE', '~FY~SBUPDATE', query['sql']) query['sql'] = re.sub(r'UPDATE', '~FY~SBUPDATE', query['sql'])
query['sql'] = re.sub(r'DELETE', '~FR~SBDELETE', query['sql']) query['sql'] = re.sub(r'DELETE', '~FR~SBDELETE', query['sql'])
t = Template("{% for sql in sqllog %}{% if not forloop.first %} {% endif %}[{{forloop.counter}}] ~FC{{sql.time}}s~FW: {{sql.sql|safe}}{% if not forloop.last %}\n{% endif %}{% endfor %}") t = Template("{% for sql in sqllog %}{% if not forloop.first %} {% endif %}[{{forloop.counter}}] ~FC{{sql.time}}s~FW: {{sql.sql|safe}}{% if not forloop.last %}\n{% endif %}{% endfor %}")
logging.debug(t.render(Context({'sqllog':queries,'count':len(queries),'time':time}))) logging.debug(t.render(Context({'sqllog':queries,'count':len(queries),'time':time_elapsed})))
return response return response
SIMPSONS_QUOTES = [ SIMPSONS_QUOTES = [
@ -155,4 +156,7 @@ class SimpsonsMiddleware:
response["X-%s" % source] = quote[1] response["X-%s" % source] = quote[1]
return response return response
class TimingMiddleware:
def process_request(self, request):
setattr(request, 'start_time', time.time())

View file

@ -519,6 +519,7 @@ def shared_stories_public(request, username):
@json.json_view @json.json_view
def profile(request): def profile(request):
time.sleep(1)
user = get_user(request.user) user = get_user(request.user)
user_id = request.GET.get('user_id', user.pk) user_id = request.GET.get('user_id', user.pk)
include_activities_html = request.REQUEST.get('include_activities_html', None) include_activities_html = request.REQUEST.get('include_activities_html', None)

View file

@ -92,6 +92,7 @@ MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'apps.profile.middleware.TimingMiddleware',
'apps.profile.middleware.LastSeenMiddleware', 'apps.profile.middleware.LastSeenMiddleware',
'apps.profile.middleware.SQLLogToConsoleMiddleware', 'apps.profile.middleware.SQLLogToConsoleMiddleware',
'subdomains.middleware.SubdomainMiddleware', 'subdomains.middleware.SubdomainMiddleware',

View file

@ -1,6 +1,7 @@
import logging import logging
import re import re
import string import string
import time
from django.core.handlers.wsgi import WSGIRequest from django.core.handlers.wsgi import WSGIRequest
from django.conf import settings from django.conf import settings
@ -14,6 +15,7 @@ def getlogger():
def user(u, msg): def user(u, msg):
platform = '------' platform = '------'
time_elapsed = ""
if isinstance(u, WSGIRequest): if isinstance(u, WSGIRequest):
request = u request = u
u = request.user u = request.user
@ -46,9 +48,13 @@ def user(u, msg):
platform = 'Opera' platform = 'Opera'
elif 'WP7' in user_agent: elif 'WP7' in user_agent:
platform = 'WP7' platform = 'WP7'
if hasattr(request, 'start_time'):
now = time.time()
time_elapsed = "[%.4ss] " % (now - request.start_time)
premium = '*' if u.is_authenticated() and u.profile.is_premium else '' premium = '*' if u.is_authenticated() and u.profile.is_premium else ''
username = cipher(unicode(u)) if settings.CIPHER_USERNAMES else u username = cipher(unicode(u)) if settings.CIPHER_USERNAMES else u
info(' ---> [~FB~SN%-6s~SB] [%s%s] %s' % (platform, username, premium, msg)) info(' ---> [~FB~SN%-6s~SB] [%s%s] %s%s' % (platform, time_elapsed, username, premium, msg))
def cipher(msg): def cipher(msg):
shift = len(msg) shift = len(msg)