utils: include exception logging in log_http_request (#55516)
This commit is contained in:
parent
e98fdad43f
commit
f6aafa93c3
|
@ -188,6 +188,7 @@ def log_http_request(logger, request, response=None, exception=None, error_log=T
|
|||
log_function = logger.info
|
||||
message = ''
|
||||
extra = extra or {}
|
||||
kwargs = {}
|
||||
|
||||
if request is not None:
|
||||
message = '%s %s' % (request.method, request.url)
|
||||
|
@ -222,11 +223,12 @@ def log_http_request(logger, request, response=None, exception=None, error_log=T
|
|||
message = repr(exception)
|
||||
extra['response_exception'] = repr(exception)
|
||||
log_function = logger.error
|
||||
kwargs['exc_info'] = exception
|
||||
|
||||
# allow resources to disable any error log at requests level
|
||||
if not error_log:
|
||||
log_function = logger.info
|
||||
log_function(message, extra=extra)
|
||||
log_function(message, extra=extra, **kwargs)
|
||||
|
||||
|
||||
# Wrapper around requests.Session
|
||||
|
|
|
@ -5,6 +5,7 @@ import itertools
|
|||
import logging
|
||||
|
||||
import pytest
|
||||
import requests
|
||||
import utils
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.log import AdminEmailHandler
|
||||
|
@ -381,3 +382,16 @@ def test_logged_requests_and_responses_max_size(app, db, monkeypatch, settings):
|
|||
assert ResourceLog.objects.all()[1].extra.get('response_content') == '\'{"service_reply_var": "33\''
|
||||
else:
|
||||
assert ResourceLog.objects.all()[1].extra.get('response_content') == 'b\'{"service_reply_var": "33\''
|
||||
|
||||
|
||||
def test_proxy_logger_email_traceback(app, db, email_handler, settings, mailoutbox, connector, monkeypatch):
|
||||
settings.ADMINS = [('admin', 'admin@example.net')]
|
||||
endpoint_url = utils.generic_endpoint_url('feeds', 'json', slug=connector.slug)
|
||||
|
||||
@endpoint()
|
||||
def json(self, request):
|
||||
raise requests.ConnectionError('timeout')
|
||||
|
||||
monkeypatch.setattr(Feed, 'json', json)
|
||||
resp = app.get(endpoint_url, status=500)
|
||||
assert any('Traceback:' in mail.body for mail in mailoutbox)
|
||||
|
|
Loading…
Reference in New Issue