- Author:
- mikeivanov
- Posted:
- September 18, 2007
- Language:
- Python
- Version:
- .96
- Score:
- 1 (after 1 ratings)
The solution is based on dballanc's snippet.
Can easily be combined with any of the SQL tracing solutions.
You might want to run a separate logging server and redirect your logs there. Please refer to the logging reference manual.
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # 1. In settings.py add something like this:
import logging
logging.basicConfig(
level=logging.NOTSET,
format='%(asctime)s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
#change as needed
filename='/path/to/log/dir/my-log-file.log',
filemode='a'
)
logging.getLogger('').setLevel(logging.NOTSET)
# 2. In settings.py add '<myapp>.middleware.trace.TraceMiddleware'
# to MIDDLEWARE_CLASSES.
# 3. Then in <myapp>/middleware create trace.py:
import logging, datetime
class TraceMiddleware(object):
def process_request(self, request) :
logging.info(
"%s %s" % (request.META['REQUEST_METHOD'],
request.get_full_path())
)
request.started = datetime.datetime.now()
return None
def process_response(self, request, response) :
delta = (datetime.datetime.now() - request.started)
logging.info(
"<- Response in: %f sec.",
delta.seconds + (delta.microseconds / 1000000.0)
)
return response
def process_exception(self, request, exception):
logging.exception("*** EXCEPTION ***")
# 4. Enjoy luxury of the logging API in your code:
....
logging.debug('Redirecting to the home page')
return HttpResponseRedirect('/')
|
More like this
- find even number by Rajeev529 2 months, 3 weeks ago
- Form field with fixed value by roam 3 months, 2 weeks ago
- New Snippet! by Antoliny0919 3 months, 3 weeks ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 6 months, 1 week ago
- get_object_or_none by azwdevops 10 months ago
Comments
request.started does not seem to exist in django, maybe it did sometime? That makes the middleware not very useful. Otherwise, good to know about the logging module
#
This saved me loads of time from having to concentrate while stepping though a deeply recursive method. I was able to easily see that I forgot to import the time module. ha!
#
Please login first before commenting.