Add logging of body as INFO on connection error
This commit is contained in:
@@ -61,12 +61,13 @@ 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, duration, status_code=None, exception=None):
|
||||
def log_request_fail(self, method, full_url, body, duration, status_code=None, exception=None):
|
||||
""" Log an unsuccessful API call. """
|
||||
logger.warning(
|
||||
'%s %s [status:%s request:%.3fs]', method, full_url,
|
||||
status_code or 'N/A', duration, exc_info=exception is not None
|
||||
)
|
||||
logger.info('> %s', body)
|
||||
|
||||
def _raise_error(self, status_code, raw_data):
|
||||
""" Locate appropriate exception and raise it. """
|
||||
|
||||
@@ -48,12 +48,12 @@ class RequestsHttpConnection(Connection):
|
||||
duration = time.time() - start
|
||||
raw_data = response.text
|
||||
except (requests.ConnectionError, requests.Timeout) as e:
|
||||
self.log_request_fail(method, url, time.time() - start, exception=e)
|
||||
self.log_request_fail(method, url, body, time.time() - start, exception=e)
|
||||
raise ConnectionError('N/A', str(e), e)
|
||||
|
||||
# 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, duration, response.status_code)
|
||||
self.log_request_fail(method, url, body, duration, response.status_code)
|
||||
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)
|
||||
|
||||
@@ -47,11 +47,11 @@ class Urllib3HttpConnection(Connection):
|
||||
duration = time.time() - start
|
||||
raw_data = response.data.decode('utf-8')
|
||||
except Exception as e:
|
||||
self.log_request_fail(method, full_url, time.time() - start, exception=e)
|
||||
self.log_request_fail(method, full_url, body, time.time() - start, exception=e)
|
||||
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, duration, response.status)
|
||||
self.log_request_fail(method, url, body, duration, response.status)
|
||||
self._raise_error(response.status, raw_data)
|
||||
|
||||
self.log_request_success(method, full_url, url, body, response.status,
|
||||
|
||||
@@ -57,7 +57,7 @@ class MemcachedConnection(PoolingConnection):
|
||||
if response:
|
||||
response = response.decode('utf-8')
|
||||
except Exception as e:
|
||||
self.log_request_fail(method, full_url, time.time() - start, exception=e)
|
||||
self.log_request_fail(method, full_url, body, time.time() - start, exception=e)
|
||||
raise ConnectionError('N/A', str(e), e)
|
||||
finally:
|
||||
self._release_connection(mc)
|
||||
@@ -71,7 +71,7 @@ class MemcachedConnection(PoolingConnection):
|
||||
raise TransportError('N/A', data['error'])
|
||||
|
||||
if not (200 <= status < 300) and status not in ignore:
|
||||
self.log_request_fail(method, url, duration, status)
|
||||
self.log_request_fail(method, url, body, duration, status)
|
||||
self._raise_error(status, response)
|
||||
|
||||
self.log_request_success(method, full_url, url, body, status,
|
||||
|
||||
@@ -61,13 +61,13 @@ class ThriftConnection(PoolingConnection):
|
||||
response = tclient.execute(request)
|
||||
duration = time.time() - start
|
||||
except TException as e:
|
||||
self.log_request_fail(method, url, time.time() - start, exception=e)
|
||||
self.log_request_fail(method, url, body, time.time() - start, exception=e)
|
||||
raise ConnectionError('N/A', str(e), e)
|
||||
finally:
|
||||
self._release_connection(tclient)
|
||||
|
||||
if not (200 <= response.status < 300) and response.status not in ignore:
|
||||
self.log_request_fail(method, url, duration, response.status)
|
||||
self.log_request_fail(method, url, body, duration, response.status)
|
||||
self._raise_error(response.status, response.body)
|
||||
|
||||
self.log_request_success(method, url, url, body, response.status,
|
||||
|
||||
Reference in New Issue
Block a user