From 40b69607c751c4afa453edfd41d2ed155e58187e Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 14 Apr 2016 08:12:35 -0700 Subject: [PATCH] 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. --- django/core/handlers/base.py | 10 ++++++---- tests/logging_tests/tests.py | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py index 69cd2b030f..cbdaea5a97 100644 --- a/django/core/handlers/base.py +++ b/django/core/handlers/base.py @@ -179,10 +179,6 @@ class BaseHandler(object): response_is_rendered = True except http.Http404 as exc: - logger.warning( - 'Not Found: %s', request.path, - extra={'status_code': 404, 'request': request}, - ) if settings.DEBUG: response = debug.technical_404_response(request, exc) else: @@ -246,6 +242,12 @@ class BaseHandler(object): if not response_is_rendered and callable(getattr(response, 'render', None)): response = response.render() + if response.status_code == 404: + logger.warning( + 'Not Found: %s', request.path, + extra={'status_code': 404, 'request': request}, + ) + return response def process_exception_by_middleware(self, exception, request): diff --git a/tests/logging_tests/tests.py b/tests/logging_tests/tests.py index 22a059cb0d..b9845ea719 100644 --- a/tests/logging_tests/tests.py +++ b/tests/logging_tests/tests.py @@ -133,6 +133,11 @@ class HandlerLoggingTests(SetupDefaultLoggingMixin, LoggingCaptureMixin, SimpleT ) 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): self.client.get('/this_does_not/') self.client.get('/en/nor_this/')