Improve logging of failures in matrixfederationclient

* don't log exception types twice
* not all exceptions have a meaningful 'message'. Use the repr rather than
  attempting to build a string ourselves.
This commit is contained in:
Richard van der Hoff 2017-09-28 13:44:47 +01:00
parent 75e67b9ee4
commit e43de3ae4b

View File

@ -204,18 +204,15 @@ class MatrixFederationHttpClient(object):
raise raise
logger.warn( logger.warn(
"{%s} Sending request failed to %s: %s %s: %s - %s", "{%s} Sending request failed to %s: %s %s: %s",
txn_id, txn_id,
destination, destination,
method, method,
url_bytes, url_bytes,
type(e).__name__,
_flatten_response_never_received(e), _flatten_response_never_received(e),
) )
log_result = "%s - %s" % ( log_result = _flatten_response_never_received(e)
type(e).__name__, _flatten_response_never_received(e),
)
if retries_left and not timeout: if retries_left and not timeout:
if long_retries: if long_retries:
@ -578,12 +575,14 @@ class _JsonProducer(object):
def _flatten_response_never_received(e): def _flatten_response_never_received(e):
if hasattr(e, "reasons"): if hasattr(e, "reasons"):
return ", ".join( reasons = ", ".join(
_flatten_response_never_received(f.value) _flatten_response_never_received(f.value)
for f in e.reasons for f in e.reasons
) )
return "%s:[%s]" % (type(e).__name__, reasons)
else: else:
return "%s: %s" % (type(e).__name__, e.message,) return repr(e)
def check_content_type_is_json(headers): def check_content_type_is_json(headers):