Kaydet (Commit) 40b69607 authored tarafından Carl Worth's avatar Carl Worth Kaydeden (comit) Tim Graham

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.
üst 5e00b144
...@@ -179,10 +179,6 @@ class BaseHandler(object): ...@@ -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): ...@@ -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 ...@@ -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/')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment