From c6095a099c9052a92ff40d90fc74e09ed1fcd3d0 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 6 Jun 2019 10:36:52 +0200 Subject: [PATCH] add django request context to requests error logs (#33740) --- combo/data/models.py | 5 ++++- combo/utils/requests_wrapper.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/combo/data/models.py b/combo/data/models.py index 06285c10..298dca46 100644 --- a/combo/data/models.py +++ b/combo/data/models.py @@ -1146,6 +1146,7 @@ class JsonCellBase(CellBase): invalidate_cache=invalidate_cache, log_errors=log_errors, timeout=data_url_dict.get('timeout', self.timeout), + django_request=context.get('request'), ) except requests.RequestException as e: extra_context[data_key + '_status'] = -1 @@ -1237,7 +1238,9 @@ class JsonCellBase(CellBase): headers={'Accept': 'application/json'}, remote_service='auto', json=content, - without_user=True) + without_user=True, + django_request=request, + ) if json_response.status_code // 100 != 2: # 2xx logger.error('error POSTing data to URL (%s)', url) diff --git a/combo/utils/requests_wrapper.py b/combo/utils/requests_wrapper.py index 66425309..7d047f88 100644 --- a/combo/utils/requests_wrapper.py +++ b/combo/utils/requests_wrapper.py @@ -39,6 +39,7 @@ class Requests(RequestsSession): cache_duration = kwargs.pop('cache_duration', 15) invalidate_cache = kwargs.pop('invalidate_cache', False) user = kwargs.pop('user', None) + django_request = kwargs.pop('django_request', None) without_user = kwargs.pop('without_user', False) federation_key = kwargs.pop('federation_key', 'auto') # 'auto', 'email', 'nameid' raise_if_not_cached = kwargs.pop('raise_if_not_cached', False) @@ -123,7 +124,10 @@ class Requests(RequestsSession): response = super(Requests, self).request(method, url, **kwargs) if log_errors and (response.status_code // 100 != 2): - logging.error('failed to %s %s (%s)', method, url, response.status_code) + extra = {} + if django_request: + extra['request'] = django_request + logging.error('failed to %s %s (%s)', method, url, response.status_code, extra=extra) if method == 'GET' and cache_duration and (response.status_code // 100 == 2): cache.set(cache_key, response.content, cache_duration)