Source code for intranet.middleware.access_log
import logging
from django.conf import settings
from django.utils import timezone
logger = logging.getLogger("intranet_access")
[docs]class AccessLogMiddleWare:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if not request.user:
username = "unknown_user"
elif request.user.is_anonymous:
username = "anonymous_user"
else:
username = request.user.username
if "HTTP_X_REAL_IP" in request.META:
ip = request.META["HTTP_X_REAL_IP"]
else:
ip = (request.META.get("REMOTE_ADDR", ""),)
if isinstance(ip, set):
ip = ip[0]
user_agent = request.META.get("HTTP_USER_AGENT", "")
log_line = '{} - {} - [{}] "{}" "{}"'.format(ip, username, timezone.localtime(), request.get_full_path(), user_agent)
if user_agent and not any(user_agent_substring in user_agent for user_agent_substring in settings.NONLOGGABLE_USER_AGENT_SUBSTRINGS):
logger.info(log_line)
return response