Repository: iterative/dvc
Issue: logger: logger.error() is not printing exception as it used to

logger.error used to show the exception that it was caused by, but it doesn't anymore unless you are using logger.exception. Need to either replace logger.error() with logger.exception() where needed, or make logger.error() print exception too. E.g. see https://github.com/iterative/dvc/blob/0.34.0/dvc/remote/local.py#L511

Changed files:
dvc/remote/local.py, dvc/remote/ssh/__init__.py, dvc/remote/http.py, dvc/remote/s3.py

diff --git a/dvc/remote/http.py b/dvc/remote/http.py
index 2132e1e55..b505eca50 100644
--- a/dvc/remote/http.py
+++ b/dvc/remote/http.py
@@ -90,7 +90,7 @@ class RemoteHTTP(RemoteBase):
 
             except Exception:
                 msg = "failed to download '{}'".format(from_info["path"])
-                logger.error(msg)
+                logger.exception(msg)
                 continue
 
             if not no_progress_bar:
diff --git a/dvc/remote/local.py b/dvc/remote/local.py
index b5e84a5cc..112336365 100644
--- a/dvc/remote/local.py
+++ b/dvc/remote/local.py
@@ -272,7 +272,7 @@ class RemoteLOCAL(RemoteBase):
                 d = json.load(fd)
         except Exception:
             msg = "Failed to load dir cache '{}'"
-            logger.error(msg.format(os.path.relpath(path)))
+            logger.exception(msg.format(os.path.relpath(path)))
             return []
 
         if not isinstance(d, list):
@@ -511,7 +511,7 @@ class RemoteLOCAL(RemoteBase):
                 copyfile(from_info["path"], tmp_file, name=name)
                 os.rename(tmp_file, to_info["path"])
             except Exception:
-                logger.error(
+                logger.exception(
                     "failed to upload '{}' to '{}'".format(
                         from_info["path"], to_info["path"]
                     )
@@ -555,7 +555,7 @@ class RemoteLOCAL(RemoteBase):
 
                 move(tmp_file, to_info["path"])
             except Exception:
-                logger.error(
+                logger.exception(
                     "failed to download '{}' to '{}'".format(
                         from_info["path"], to_info["path"]
                     )
diff --git a/dvc/remote/s3.py b/dvc/remote/s3.py
index baef66c3e..a18e61a79 100644
--- a/dvc/remote/s3.py
+++ b/dvc/remote/s3.py
@@ -188,7 +188,7 @@ class RemoteS3(RemoteBase):
                 )
             except Exception:
                 msg = "failed to upload '{}'".format(from_info["path"])
-                logger.error(msg)
+                logger.exception(msg)
                 continue
 
             progress.finish_target(name)
@@ -246,7 +246,7 @@ class RemoteS3(RemoteBase):
                 msg = "failed to download '{}/{}'".format(
                     from_info["bucket"], from_info["path"]
                 )
-                logger.error(msg)
+                logger.exception(msg)
                 continue
 
             move(tmp_file, to_info["path"])
diff --git a/dvc/remote/ssh/__init__.py b/dvc/remote/ssh/__init__.py
index 7bcac9557..0ea9a90a5 100644
--- a/dvc/remote/ssh/__init__.py
+++ b/dvc/remote/ssh/__init__.py
@@ -160,7 +160,7 @@ class RemoteSSH(RemoteBase):
                     from_info["path"], to_info["path"], progress_title=name
                 )
             except Exception:
-                logger.error(
+                logger.exception(
                     "failed to download '{host}/{path}' to '{dest}'".format(
                         host=from_info["host"],
                         path=from_info["path"],