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:
Carl Worth 2016-04-14 08:12:35 -07:00 committed by Tim Graham
parent 5e00b14403
commit 40b69607c7
2 changed files with 11 additions and 4 deletions

View File

@ -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):

View File

@ -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/')