Source code for django_dd_logger.middleware.request_log
import logging
import time
logger = logging.getLogger(__name__)
[docs]
class RequestLoggingMiddleware:
def __init__(self, get_response=None):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
self.log_request(request, response)
return response
[docs]
def process_response(self, request, response):
self.log_request(request, response)
return response
[docs]
def log_request(self, request, response):
log_entry_dict = {"http.status_code": response.status_code}
if hasattr(request, "request_start_time"):
duration_seconds = time.time() - request.request_start_time
log_entry_dict["duration"] = duration_seconds * 1000000000.0
if response.status_code in range(400, 500):
log_entry_dict["error.kind"] = response.status_code
log_entry_dict["error.message"] = response.reason_phrase
logger.warning(
f"HTTP {response.status_code} {response.reason_phrase}",
extra=log_entry_dict,
)
elif response.status_code in range(500, 600):
log_entry_dict["error.kind"] = response.status_code
log_entry_dict["error.message"] = response.reason_phrase
logger.error(
f"HTTP {response.status_code} {response.reason_phrase}",
extra=log_entry_dict,
)
else:
logger.info(
f"HTTP {response.status_code} {response.reason_phrase}",
extra=log_entry_dict,
)