Add logging of body as INFO on connection error

This commit is contained in:
Honza Král
2013-12-03 01:55:32 +01:00
parent cf03f9831a
commit c5c98dcaac
5 changed files with 10 additions and 9 deletions
+2 -1
View File
@@ -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. """
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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,