Source code for apps.managers.log_mgr.middleware
"""A middleware class to support logging of interactions with logged in users."""
import traceback
#import datetime
from django.core.signals import got_request_exception
from django.dispatch.dispatcher import receiver
import re
# Filter out requests to media and site_media.
from apps.managers.log_mgr import log_mgr
MEDIA_REGEXP = r'^\/site_media'
URL_FILTER = ("/favicon.ico", "/admin/jsi18n/")
[docs]class LoggingMiddleware(object):
"""Provides logging of logged in user interactions."""
[docs] def process_response(self, request, response):
"""Log the actions of logged in users."""
#time_start = datetime.datetime.now()
# Filter out the following paths. Logs will not be created for these
# paths.
if re.match(MEDIA_REGEXP, request.path) or \
request.path in URL_FILTER:
return response
log_mgr.write_log_entry(request=request, response_status_code=response.status_code)
#time_end = datetime.datetime.now()
#print "%s time: %s" % ("logging", (time_end - time_start))
#print "%s timestamp: %s" % ("End logging middleware", time_end)
return response
@receiver(got_request_exception)
[docs]def log_request_exception(sender, **kwargs):
"""log the exception with traceback."""
_ = sender
exception = traceback.format_exc()
request = kwargs["request"]
log_mgr.write_log_entry(request=request, response_status_code=500, exception=exception)