Fixed #26504 -- Avoided logging "Not Found" warnings if a middleware handles the 404.
For example, this avoids a warning in the case of a request that's redirected to a language-prefixed URL by LocaleMiddleware.
This commit is contained in:
parent
5e00b14403
commit
40b69607c7
|
@ -179,10 +179,6 @@ class BaseHandler(object):
|
||||||
response_is_rendered = True
|
response_is_rendered = True
|
||||||
|
|
||||||
except http.Http404 as exc:
|
except http.Http404 as exc:
|
||||||
logger.warning(
|
|
||||||
'Not Found: %s', request.path,
|
|
||||||
extra={'status_code': 404, 'request': request},
|
|
||||||
)
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
response = debug.technical_404_response(request, exc)
|
response = debug.technical_404_response(request, exc)
|
||||||
else:
|
else:
|
||||||
|
@ -246,6 +242,12 @@ class BaseHandler(object):
|
||||||
if not response_is_rendered and callable(getattr(response, 'render', None)):
|
if not response_is_rendered and callable(getattr(response, 'render', None)):
|
||||||
response = response.render()
|
response = response.render()
|
||||||
|
|
||||||
|
if response.status_code == 404:
|
||||||
|
logger.warning(
|
||||||
|
'Not Found: %s', request.path,
|
||||||
|
extra={'status_code': 404, 'request': request},
|
||||||
|
)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def process_exception_by_middleware(self, exception, request):
|
def process_exception_by_middleware(self, exception, request):
|
||||||
|
|
|
@ -133,6 +133,11 @@ class HandlerLoggingTests(SetupDefaultLoggingMixin, LoggingCaptureMixin, SimpleT
|
||||||
)
|
)
|
||||||
class I18nLoggingTests(SetupDefaultLoggingMixin, LoggingCaptureMixin, SimpleTestCase):
|
class I18nLoggingTests(SetupDefaultLoggingMixin, LoggingCaptureMixin, SimpleTestCase):
|
||||||
|
|
||||||
|
def test_i18n_page_found_no_warning(self):
|
||||||
|
self.client.get('/exists/')
|
||||||
|
self.client.get('/en/exists/')
|
||||||
|
self.assertEqual(self.logger_output.getvalue(), '')
|
||||||
|
|
||||||
def test_i18n_page_not_found_warning(self):
|
def test_i18n_page_not_found_warning(self):
|
||||||
self.client.get('/this_does_not/')
|
self.client.get('/this_does_not/')
|
||||||
self.client.get('/en/nor_this/')
|
self.client.get('/en/nor_this/')
|
||||||
|
|
Loading…
Reference in New Issue