From a9b8f865475ff7431fba98d44e143e45231d62d8 Mon Sep 17 00:00:00 2001 From: Darryl Ring Date: Tue, 26 Jan 2016 18:45:52 -0800 Subject: [PATCH] Log response body for failed requests Addresses #346 --- elasticsearch/connection/base.py | 5 ++++- elasticsearch/connection/http_requests.py | 2 +- elasticsearch/connection/http_urllib3.py | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/elasticsearch/connection/base.py b/elasticsearch/connection/base.py index e1cb5503..914967c3 100644 --- a/elasticsearch/connection/base.py +++ b/elasticsearch/connection/base.py @@ -75,7 +75,7 @@ class Connection(object): if tracer.isEnabledFor(logging.DEBUG): tracer.debug('#[%s] (%.3fs)\n#%s', status_code, duration, _pretty_json(response).replace('\n', '\n#') if response else '') - def log_request_fail(self, method, full_url, body, duration, status_code=None, exception=None): + def log_request_fail(self, method, full_url, body, duration, status_code=None, response=None, exception=None): """ Log an unsuccessful API call. """ logger.warning( '%s %s [status:%s request:%.3fs]', method, full_url, @@ -89,6 +89,9 @@ class Connection(object): logger.debug('> %s', body) + if response is not None: + logger.debug('< %s', response) + def _raise_error(self, status_code, raw_data): """ Locate appropriate exception and raise it. """ error_message = raw_data diff --git a/elasticsearch/connection/http_requests.py b/elasticsearch/connection/http_requests.py index 6aee2dba..4271403f 100644 --- a/elasticsearch/connection/http_requests.py +++ b/elasticsearch/connection/http_requests.py @@ -74,7 +74,7 @@ class RequestsHttpConnection(Connection): # raise errors based on http status codes, let the client handle those if needed if not (200 <= response.status_code < 300) and response.status_code not in ignore: - self.log_request_fail(method, url, body, duration, response.status_code) + self.log_request_fail(method, url, body, duration, response.status_code, raw_data) self._raise_error(response.status_code, raw_data) self.log_request_success(method, url, response.request.path_url, body, response.status_code, raw_data, duration) diff --git a/elasticsearch/connection/http_urllib3.py b/elasticsearch/connection/http_urllib3.py index 310b7ebc..1558b2ac 100644 --- a/elasticsearch/connection/http_urllib3.py +++ b/elasticsearch/connection/http_urllib3.py @@ -102,7 +102,7 @@ class Urllib3HttpConnection(Connection): raise ConnectionError('N/A', str(e), e) if not (200 <= response.status < 300) and response.status not in ignore: - self.log_request_fail(method, url, body, duration, response.status) + self.log_request_fail(method, url, body, duration, response.status, raw_data) self._raise_error(response.status, raw_data) self.log_request_success(method, full_url, url, body, response.status,