          log_response(
              'Forbidden (Permission denied): %s', request.path,
              response=response,
              request=request,
              exc_info=sys.exc_info(),
          )
  
      elif isinstance(exc, MultiPartParserError):
          response = get_exception_response(request, get_resolver(get_urlconf()), 400, exc)
          log_response(
 
</s> remove             exc_info=sys.exc_info(),
 </s> add             exception=exc, </s> remove             exc_info=sys.exc_info(),
 </s> add             exception=exc, </s> remove         exc_info=exc_info,
 </s> add         exc_info=exception, </s> remove             exc_info=sys.exc_info(),
 </s> add             exception=exc,
            exception=exc,
          log_response(
              'Forbidden (Permission denied): %s', request.path,
              response=response,
              request=request,
            exception=exc,
          )
  
      elif isinstance(exc, MultiPartParserError):
          response = get_exception_response(request, get_resolver(get_urlconf()), 400, exc)
          log_response(
keep keep keep keep replace keep keep keep keep keep
 Changed django.utils.log.log_response() to take exception instance.

There's little point retrieving a fresh reference to the exception in
the legacy tuple format, when it's all available via the exception
instance we already have. 
django/core/handlers/exception.py