Browse Source

HUE-9112 [lib] Avoid unicode decode error in Resource logging

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 110: ordinal not in range(128)
Romain 5 years ago
parent
commit
3edbef9e0d
1 changed files with 7 additions and 7 deletions
  1. 7 7
      desktop/core/src/desktop/lib/rest/resource.py

+ 7 - 7
desktop/core/src/desktop/lib/rest/resource.py

@@ -105,22 +105,22 @@ class Resource(object):
                                   allow_redirects=allow_redirects,
                                   urlencode=self._urlencode,
                                   clear_cookies=clear_cookies)
-    finally: # Print even when there's an exception
-      log_length = conf.REST_RESPONSE_SIZE.get() != -1 and conf.REST_RESPONSE_SIZE.get() if log_response else 0 # We want to output duration without content
+    finally:  # Print even when there is an exception
+      log_length = conf.REST_RESPONSE_SIZE.get() != -1 and conf.REST_RESPONSE_SIZE.get() if log_response else 0  # Output duration without content
       duration = time.time() - start_time
       message = '%s %s %s%s%s %s%s returned in %dms %s %s %s%s' % (
         method,
         type(self._client._session.auth) if self._client._session and self._client._session.auth else None,
         self._client._base_url,
-        smart_str(path),
+        smart_str(path, errors='replace'),
         iri_to_uri('?' + urlencode(params)) if params else '',
-        smart_unicode(data, errors='replace')[:log_length] if data else "",
-        log_length and len(data) > log_length and "..." or "" if data else "",
+        smart_str(data, errors='replace')[:log_length] if data else '',
+        log_length and len(data) > log_length and '...' or '' if data else '',
         (duration * 1000),
         resp.status_code if resp else 0,
         len(resp.content) if resp else 0,
-        smart_unicode(resp.content[:log_length], errors='replace') if resp else "",
-        log_length and len(resp.content) > log_length and "..." or "" if resp else ""
+        smart_str(resp.content, errors='replace')[:log_length] if resp else '',
+        log_length and len(resp.content) > log_length and '...' or '' if resp else ''
       )
       self._client.logger.disabled = 0
       log_if_slow_call(duration=duration, message=message, logger=self._client.logger)