You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2020/07/04 11:00:45 UTC

[lucene-solr] 02/14: SOLR-14523: Enhance gradle logging calls validation: eliminate getMessage()

This is an automated email from the ASF dual-hosted git repository.

ab pushed a commit to branch jira/solr-12847-2
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit d2286ce568b453165bdfcc624e7de73d86929386
Author: Erick Erickson <Er...@gmail.com>
AuthorDate: Wed Jul 1 22:07:59 2020 -0400

    SOLR-14523: Enhance gradle logging calls validation: eliminate getMessage()
---
 solr/CHANGES.txt                                   | 21 ++++++++++++++++++
 .../handler/dataimport/MailEntityProcessor.java    |  6 ++----
 .../TestSolrEntityProcessorEndToEnd.java           | 16 +++++++-------
 .../test/org/apache/solr/ltr/TestRerankBase.java   | 25 ----------------------
 .../solr/prometheus/scraper/SolrScraper.java       |  2 +-
 .../java/org/apache/solr/cloud/ZkController.java   |  5 ++---
 .../autoscaling/InactiveMarkersPlanAction.java     |  2 +-
 .../cloud/autoscaling/OverseerTriggerThread.java   |  4 ++--
 .../org/apache/solr/core/ConfigSetProperties.java  |  2 +-
 .../java/org/apache/solr/core/CoreContainer.java   |  2 +-
 .../apache/solr/core/CorePropertiesLocator.java    |  4 ++--
 .../src/java/org/apache/solr/core/SolrPaths.java   |  2 +-
 .../java/org/apache/solr/core/SolrXmlConfig.java   |  2 +-
 .../solr/core/TransientSolrCoreCacheFactory.java   |  6 ++----
 .../apache/solr/handler/CdcrReplicatorState.java   |  2 +-
 .../solr/handler/CdcrUpdateLogSynchronizer.java    |  8 +++----
 .../apache/solr/handler/MoreLikeThisHandler.java   |  2 +-
 .../org/apache/solr/handler/SolrConfigHandler.java |  2 +-
 .../solr/handler/component/SearchHandler.java      |  2 +-
 .../src/java/org/apache/solr/pkg/PackageAPI.java   |  2 +-
 .../src/java/org/apache/solr/search/Grouping.java  |  2 +-
 .../org/apache/solr/search/SolrIndexSearcher.java  |  2 +-
 .../solr/search/grouping/CommandHandler.java       |  2 +-
 .../security/Sha256AuthenticationProvider.java     |  2 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |  4 ++--
 .../java/org/apache/solr/update/HdfsUpdateLog.java |  2 +-
 .../src/java/org/apache/solr/update/UpdateLog.java |  2 +-
 .../processor/AtomicUpdateProcessorFactory.java    |  3 +--
 ...DocBasedVersionConstraintsProcessorFactory.java |  2 +-
 .../DocExpirationUpdateProcessorFactory.java       |  6 ++----
 .../update/processor/TolerantUpdateProcessor.java  |  2 +-
 .../update/processor/URLClassifyProcessor.java     |  2 +-
 .../src/java/org/apache/solr/util/SolrCLI.java     | 17 +++++++--------
 .../apache/solr/cloud/CollectionsAPISolrJTest.java |  4 ++--
 .../api/collections/CollectionReloadTest.java      |  2 +-
 .../CollectionsAPIAsyncDistributedZkTest.java      |  2 +-
 .../apache/solr/schema/ChangedSchemaMergeTest.java |  4 ++--
 .../solrj/impl/SolrClientNodeStateProvider.java    |  2 +-
 .../solr/client/solrj/impl/XMLResponseParser.java  |  2 +-
 .../apache/solr/common/cloud/ZkStateReader.java    | 14 ++++++------
 .../org/apache/solr/common/util/RetryUtil.java     |  2 +-
 .../apache/solr/common/util/XMLErrorLogger.java    |  2 +-
 .../solr/client/solrj/LargeVolumeTestBase.java     |  2 +-
 43 files changed, 94 insertions(+), 107 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1eef58e..db8c747 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -89,11 +89,32 @@ Bug Fixes
 
 ==================  8.7.0 ==================
 
+Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
+
+New Features
+---------------------
+(No changes)
+
+Improvements
+---------------------
+
+* SOLR-14523: Enhance gradle logging calls validation: eliminate getMessage() (Andras Salamon via Erick Erickson)
+
+
+Optimizations
+---------------------
+(No changes)
+
+Bug Fixes
+---------------------
+(No changes)
+
 Other Changes
 ---------------------
 
 * SOLR-14592: Upgrade Zookeeper to 3.6.1. NOTE: this required upgrading netty to 4.1.50 (Erick Erickson)
 
+
 ==================  8.6.0 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java b/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
index 6e5ad92..6861ae3 100644
--- a/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
+++ b/solr/contrib/dataimporthandler-extras/src/java/org/apache/solr/handler/dataimport/MailEntityProcessor.java
@@ -576,8 +576,7 @@ public class MailEntityProcessor extends EntityProcessorBase {
             folders.add(ufldr);
         }
       } catch (MessagingException me) {
-        log.warn("Messaging exception retrieving user namespaces: {}"
-            , me.getMessage());
+        log.warn("Messaging exception retrieving user namespaces: ", me);
       }
     }
     
@@ -590,8 +589,7 @@ public class MailEntityProcessor extends EntityProcessorBase {
             folders.add(sfldr);
         }
       } catch (MessagingException me) {
-        log.warn("Messaging exception retrieving shared namespaces: {}"
-            , me.getMessage());
+        log.warn("Messaging exception retrieving shared namespaces: ", me);
       }
     }
     
diff --git a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
index 9c4e957..b552d01 100644
--- a/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
+++ b/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
@@ -157,7 +157,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       addDocumentsToSolr(SOLR_DOCS);
       runFullImport(generateDIHConfig("query='*:*' rows='2' fl='id,desc' onError='skip'", false));
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
@@ -175,7 +175,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       map.put("rows", "50");
       runFullImport(generateDIHConfig("query='*:*' fq='desc:Description1*,desc:Description*2' rows='2'", false), map);
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
@@ -190,7 +190,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       addDocumentsToSolr(generateSolrDocuments(7));
       runFullImport(generateDIHConfig("query='*:*' fl='id' rows='2'"+(random().nextBoolean() ?" cursorMark='true' sort='id asc'":""), false));
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
@@ -221,7 +221,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       addDocumentsToSolr(DOCS);
       runFullImport(getDihConfigTagsInnerEntity());
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     } finally {
       MockDataSource.clearCache();
@@ -244,7 +244,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
     try {
       runFullImport(generateDIHConfig("query='*:*' rows='2' fl='id,desc' onError='skip'", true /* use dead server */));
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
@@ -258,7 +258,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       runFullImport(generateDIHConfig("query='bogus:3' rows='2' fl='id,desc' onError='"+
             (random().nextBoolean() ? "abort" : "justtogetcoverage")+"'", false));
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
@@ -268,7 +268,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
   public void testCursorMarkNoSort() throws SolrServerException, IOException {
     assertQ(req("*:*"), "//result[@numFound='0']");
     addDocumentsToSolr(generateSolrDocuments(7));
-    try {     
+    try {
       List<String> errors = Arrays.asList("sort='id'", //wrong sort spec
           "", //no sort spec
           "sort='id asc' timeout='12345'"); // sort is fine, but set timeout
@@ -278,7 +278,7 @@ public class TestSolrEntityProcessorEndToEnd extends AbstractDataImportHandlerTe
       runFullImport(generateDIHConfig(attrs,
             false));
     } catch (Exception e) {
-      log.error(e.getMessage(), e);
+      log.error("Exception running full import", e);
       fail(e.getMessage());
     }
     
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
index 8b26bce..22c0201 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
@@ -32,9 +32,6 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.util.ContentStream;
-import org.apache.solr.common.util.ContentStreamBase;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -47,8 +44,6 @@ import org.apache.solr.ltr.model.ModelException;
 import org.apache.solr.ltr.store.FeatureStore;
 import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
 import org.apache.solr.ltr.store.rest.ManagedModelStore;
-import org.apache.solr.request.SolrQueryRequestBase;
-import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.rest.ManagedResourceStorage;
 import org.apache.solr.rest.SolrSchemaRestApi;
 import org.apache.solr.util.RestTestBase;
@@ -437,26 +432,6 @@ public class TestRerankBase extends RestTestBase {
     assertU(commit());
   }
 
-  protected static void bulkIndex(String filePath) throws Exception {
-    final SolrQueryRequestBase req = lrf.makeRequest(
-        CommonParams.STREAM_CONTENTTYPE, "application/xml");
-
-    final List<ContentStream> streams = new ArrayList<ContentStream>();
-    final File file = new File(filePath);
-    streams.add(new ContentStreamBase.FileStream(file));
-    req.setContentStreams(streams);
-
-    try {
-      final SolrQueryResponse res = new SolrQueryResponse();
-      h.updater.handleRequest(req, res);
-    } catch (final Throwable ex) {
-      // Ignore. Just log the exception and go to the next file
-      log.error(ex.getMessage(), ex);
-    }
-    assertU(commit());
-
-  }
-
   protected static void buildIndexUsingAdoc(String filepath)
       throws FileNotFoundException {
     final Scanner scn = new Scanner(new File(filepath), "UTF-8");
diff --git a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
index 096c248..bbbfc20 100644
--- a/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
+++ b/solr/contrib/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
@@ -106,7 +106,7 @@ public abstract class SolrScraper implements Closeable {
         queryResponse = client.request(queryRequest, query.getCollection().get());
       }
     } catch (SolrServerException | IOException e) {
-      log.error("failed to request: {} {}", queryRequest.getPath(), e.getMessage());
+      log.error("failed to request: {}", queryRequest.getPath(), e);
     }
 
     JsonNode jsonNode = OBJECT_MAPPER.readTree((String) queryResponse.get("response"));
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index 75bef7d..c50581c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -2392,8 +2392,7 @@ public class ZkController implements Closeable {
         Stat stat = zkClient.exists(resourceLocation, null, true);
         v = stat.getVersion();
       } catch (Exception e) {
-        log.error(e.getMessage());
-
+        log.error("Exception during ZooKeeper node checking ", e);
       }
       if (log.isInfoEnabled()) {
         log.info(StrUtils.formatString("%s zkVersion= %d %s %d", errMsg, resourceLocation, znodeVersion));
@@ -2680,7 +2679,7 @@ public class ZkController implements Closeable {
       Thread.currentThread().interrupt();
       log.debug("Publish node as down was interrupted.");
     } catch (KeeperException e) {
-      log.warn("Could not publish node as down: {}", e.getMessage());
+      log.warn("Could not publish node as down: ", e);
     }
   }
 
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
index c863703..6482542 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
@@ -134,7 +134,7 @@ public class InactiveMarkersPlanAction extends TriggerActionBase {
         Thread.currentThread().interrupt();
         return;
       } catch (IOException | KeeperException e) {
-        log.warn("Could not cleanup marker at {}, skipping... ({}}", markerPath, e.getMessage());
+        log.warn("Could not cleanup marker at {}, skipping... ", markerPath, e);
       }
     });
   }
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
index 00dc3c9..fa27942 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
@@ -178,7 +178,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
     try {
       refreshAutoScalingConf(new AutoScalingWatcher());
     } catch (ConnectException e) {
-      log.warn("ZooKeeper watch triggered for autoscaling conf, but Solr cannot talk to ZK: [{}]", e.getMessage());
+      log.warn("ZooKeeper watch triggered for autoscaling conf, but Solr cannot talk to ZK: ", e);
     } catch (InterruptedException e) {
       // Restore the interrupted status
       Thread.currentThread().interrupt();
@@ -297,7 +297,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
       try {
         refreshAutoScalingConf(this);
       } catch (ConnectException e) {
-        log.warn("ZooKeeper watch triggered for autoscaling conf, but we cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered for autoscaling conf, but we cannot talk to ZK: ", e);
       } catch (InterruptedException e) {
         // Restore the interrupted status
         Thread.currentThread().interrupt();
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetProperties.java b/solr/core/src/java/org/apache/solr/core/ConfigSetProperties.java
index a8ca1ec..7330d76 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetProperties.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetProperties.java
@@ -59,7 +59,7 @@ public class ConfigSetProperties {
       reader = new InputStreamReader(loader.openResource(name), StandardCharsets.UTF_8);
     } catch (SolrResourceNotFoundException ex) {
       if (log.isDebugEnabled()) {
-        log.debug("Did not find ConfigSet properties, assuming default properties: {}", ex.getMessage());
+        log.debug("Did not find ConfigSet properties, assuming default properties: ", ex);
       }
       return null;
     } catch (Exception ex) {
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index e8ab59e..c9ef296 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -869,7 +869,7 @@ public class CoreContainer {
               } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
               } catch (ExecutionException e) {
-                log.error("Error waiting for SolrCore to be loaded on startup", e.getCause());
+                log.error("Error waiting for SolrCore to be loaded on startup", e);
               }
             }
           } finally {
diff --git a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
index 2d2712f..4f2a505 100644
--- a/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
+++ b/solr/core/src/java/org/apache/solr/core/CorePropertiesLocator.java
@@ -92,7 +92,7 @@ public class CorePropertiesLocator implements CoresLocator {
       }
     }
     catch (IOException e) {
-      log.error("Couldn't persist core properties to {}: {}", propfile, e.getMessage());
+      log.error("Couldn't persist core properties to {}: ", propfile, e);
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
           "Couldn't persist core properties to " + propfile.toAbsolutePath().toString() + " : " + e.getMessage());
     }
@@ -109,7 +109,7 @@ public class CorePropertiesLocator implements CoresLocator {
       try {
         Files.deleteIfExists(propfile);
       } catch (IOException e) {
-        log.warn("Couldn't delete core properties file {}: {}", propfile, e.getMessage());
+        log.warn("Couldn't delete core properties file {}: ", propfile, e);
       }
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/core/SolrPaths.java b/solr/core/src/java/org/apache/solr/core/SolrPaths.java
index 0178c67..9819798 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrPaths.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrPaths.java
@@ -67,7 +67,7 @@ public final class SolrPaths {
     } catch (NamingException e) {
       log.debug("No /solr/home in JNDI");
     } catch (RuntimeException ex) {
-      log.warn("Odd RuntimeException while testing for JNDI: {}", ex.getMessage());
+      log.warn("Odd RuntimeException while testing for JNDI: ", ex);
     }
 
     // Now try system property
diff --git a/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java b/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
index 1c96d2b..2517895 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
@@ -210,7 +210,7 @@ public class SolrXmlConfig {
       return properties;
     }
     catch (XPathExpressionException e) {
-      log.warn("Error parsing solr.xml: {}", e.getMessage());
+      log.warn("Error parsing solr.xml: ", e);
       return null;
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/core/TransientSolrCoreCacheFactory.java b/solr/core/src/java/org/apache/solr/core/TransientSolrCoreCacheFactory.java
index 6d0646e..981058e 100644
--- a/solr/core/src/java/org/apache/solr/core/TransientSolrCoreCacheFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/TransientSolrCoreCacheFactory.java
@@ -18,7 +18,6 @@ package org.apache.solr.core;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
-import java.util.Locale;
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.solr.util.plugin.PluginInfoInitialized;
@@ -58,10 +57,9 @@ public abstract class TransientSolrCoreCacheFactory {
       tccf.setCoreContainer(coreContainer);
       return tccf;
     } catch (Exception e) {
-      // Many things could cuse this, bad solrconfig, mis-typed class name, whatever. However, this should not
+      // Many things could cause this, bad solrconfig, mis-typed class name, whatever. However, this should not
       // keep the enclosing coreContainer from instantiating, so log an error and continue.
-      log.error(String.format(Locale.ROOT, "Error instantiating TransientSolrCoreCacheFactory class [%s]: %s",
-          info.className, e.getMessage()));
+      log.error("Error instantiating TransientSolrCoreCacheFactory class [{}]: ", info.className, e);
       return null;
     }
 
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
index f5aaa30..af9020a 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorState.java
@@ -100,7 +100,7 @@ class CdcrReplicatorState {
     try {
       targetClient.close();
     } catch (IOException ioe) {
-      log.warn("Caught exception trying to close server: {}", ioe.getMessage());
+      log.warn("Caught exception trying to close server: ", ioe);
     }
     this.closeLogReader();
   }
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
index 31f779d..52590ee 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
@@ -153,13 +153,13 @@ class CdcrUpdateLogSynchronizer implements CdcrStateManager.CdcrStateObserver {
                 core.getCoreDescriptor().getCloudDescriptor().getCoreNodeName());
           }
         } catch (IOException | SolrServerException e) {
-          log.warn("Couldn't get last processed version from leader {}: {}", leaderUrl, e.getMessage());
+          log.warn("Couldn't get last processed version from leader {}: ", leaderUrl, e);
           return;
         } finally {
           try {
             server.close();
           } catch (IOException ioe) {
-            log.warn("Caught exception trying to close client to {}: {}", leaderUrl, ioe.getMessage());
+            log.warn("Caught exception trying to close client to {}: ", leaderUrl, ioe);
           }
         }
 
@@ -177,9 +177,9 @@ class CdcrUpdateLogSynchronizer implements CdcrStateManager.CdcrStateObserver {
           }
         } catch (InterruptedException e) {
           Thread.currentThread().interrupt();
-          log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): {}", lastVersion, e.getMessage());
+          log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): ", lastVersion, e);
         } catch (IOException e) {
-          log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): {}", lastVersion, e.getMessage());
+          log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): ", lastVersion, e);
         }
       } catch (Throwable e) {
         log.warn("Caught unexpected exception", e);
diff --git a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index 652024c..7f55a3f 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -280,7 +280,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase
           }
         }
       } catch (ExitableDirectoryReader.ExitingReaderException ex) {
-        log.warn( "Query: {}; {}", req.getParamString(), ex.getMessage());
+        log.warn( "Query: {}; ", req.getParamString(), ex);
       } finally {
         SolrQueryTimeoutImpl.reset();
       }
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 2b71018..9ff0e66 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -380,7 +380,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
           } catch (ZkController.ResourceModifiedInZkException e) {
             //retry
             if (log.isInfoEnabled()) {
-              log.info("Race condition, the node is modified in ZK by someone else {}", e.getMessage());
+              log.info("Race condition, the node is modified in ZK by someone else", e);
             }
           }
         }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index 2051b20..b30a763 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -347,7 +347,7 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
           }
         }
       } catch (ExitableDirectoryReader.ExitingReaderException ex) {
-        log.warn("Query: {}; {}", req.getParamString(), ex.getMessage());
+        log.warn("Query: {}; ", req.getParamString(), ex);
         if( rb.rsp.getResponse() == null) {
           rb.rsp.addResponse(new SolrDocumentList());
         }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
index 61dda45..ecc344c 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
@@ -115,7 +115,7 @@ public class PackageAPI {
                 packageLoader.refreshPackageConf();
               }
             } catch (KeeperException.ConnectionLossException | KeeperException.SessionExpiredException e) {
-              log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+              log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
             } catch (KeeperException e) {
               log.error("A ZK error has occurred", e);
               throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
diff --git a/solr/core/src/java/org/apache/solr/search/Grouping.java b/solr/core/src/java/org/apache/solr/search/Grouping.java
index 60c166d..899ea57 100644
--- a/solr/core/src/java/org/apache/solr/search/Grouping.java
+++ b/solr/core/src/java/org/apache/solr/search/Grouping.java
@@ -444,7 +444,7 @@ public class Grouping {
     try {
       searcher.search(QueryUtils.combineQueryAndFilter(query, luceneFilter), collector);
     } catch (TimeLimitingCollector.TimeExceededException | ExitableDirectoryReader.ExitingReaderException x) {
-      log.warn("Query: {}; {}", query, x.getMessage());
+      log.warn("Query: {}; ", query, x);
       qr.setPartialResults(true);
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index a6b4ed9..4cc9758 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -206,7 +206,7 @@ public class SolrIndexSearcher extends IndexSearcher implements Closeable, SolrI
     try {
       super.search(query, collector);
     } catch (TimeLimitingCollector.TimeExceededException | ExitableDirectoryReader.ExitingReaderException x) {
-      log.warn("Query: [{}]; {}", query, x.getMessage());
+      log.warn("Query: [{}]; ", query, x);
       qr.setPartialResults(true);
     } catch (EarlyTerminatingCollectorException etce) {
       if (collector instanceof DelegatingCollector) {
diff --git a/solr/core/src/java/org/apache/solr/search/grouping/CommandHandler.java b/solr/core/src/java/org/apache/solr/search/grouping/CommandHandler.java
index 534c26e..f2694e7 100644
--- a/solr/core/src/java/org/apache/solr/search/grouping/CommandHandler.java
+++ b/solr/core/src/java/org/apache/solr/search/grouping/CommandHandler.java
@@ -241,7 +241,7 @@ public class CommandHandler {
       searcher.search(query, collector);
     } catch (TimeLimitingCollector.TimeExceededException | ExitableDirectoryReader.ExitingReaderException x) {
       partialResults = true;
-      log.warn("Query: {}; {}", query, x.getMessage());
+      log.warn("Query: {}; ", query, x);
     }
 
     if (includeHitCount) {
diff --git a/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java b/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
index a320ca2..5b1f6d4 100644
--- a/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
+++ b/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
@@ -116,7 +116,7 @@ public class Sha256AuthenticationProvider implements ConfigEditablePlugin,  Basi
     try {
       digest = MessageDigest.getInstance("SHA-256");
     } catch (NoSuchAlgorithmException e) {
-      log.error(e.getMessage(), e);
+      log.error("Cannot find algorithm ", e);
       return null;//should not happen
     }
     if (saltKey != null) {
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index 93be82b..9b95fd5 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -493,7 +493,7 @@ public class HttpSolrCall {
     }
     if (statusCode == AuthorizationResponse.FORBIDDEN.statusCode) {
       if (log.isDebugEnabled()) {
-        log.debug("UNAUTHORIZED auth header {} context : {}, msg: {}", req.getHeader("Authorization"), context, authResponse.getMessage());
+        log.debug("UNAUTHORIZED auth header {} context : {}, msg: {}", req.getHeader("Authorization"), context, authResponse.getMessage()); // logOk
       }
       sendError(statusCode,
           "Unauthorized request, Response code: " + statusCode);
@@ -503,7 +503,7 @@ public class HttpSolrCall {
       return RETURN;
     }
     if (!(statusCode == HttpStatus.SC_ACCEPTED) && !(statusCode == HttpStatus.SC_OK)) {
-      log.warn("ERROR {} during authentication: {}", statusCode, authResponse.getMessage());
+      log.warn("ERROR {} during authentication: {}", statusCode, authResponse.getMessage()); // logOk
       sendError(statusCode,
           "ERROR during authorization, Response code: " + statusCode);
       if (shouldAudit(EventType.ERROR)) {
diff --git a/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java b/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
index f11101e..f496a28 100644
--- a/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
@@ -211,7 +211,7 @@ public class HdfsUpdateLog extends UpdateLog {
     try {
       versionInfo = new VersionInfo(this, numVersionBuckets);
     } catch (SolrException e) {
-      log.error("Unable to use updateLog: {}", e.getMessage(), e);
+      log.error("Unable to use updateLog: ", e);
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Unable to use updateLog: " + e.getMessage(), e);
     }
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index 79323c2..85ee40a 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -402,7 +402,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
     try {
       versionInfo = new VersionInfo(this, numVersionBuckets);
     } catch (SolrException e) {
-      log.error("Unable to use updateLog: {}", e.getMessage(), e);
+      log.error("Unable to use updateLog: ", e);
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
                               "Unable to use updateLog: " + e.getMessage(), e);
     }
diff --git a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java
index a4fba56..a10a041 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateProcessorFactory.java
@@ -172,8 +172,7 @@ public class AtomicUpdateProcessorFactory extends UpdateRequestProcessorFactory
               "Atomic update failed after multiple attempts due to " + e.getMessage());
         }
         if (e.code() == ErrorCode.CONFLICT.code) { // version conflict
-          log.warn("Atomic update failed due to {} Retrying with new version .... ({})"
-              , e.getMessage(), attempts);
+          log.warn("Atomic update failed. Retrying with new version .... ({})", attempts, e);
 
           Long lastVersion = vinfo.lookupVersion(cmd.getIndexedId());
           // if lastVersion is null then we put -1 to assert that document must not exist
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessorFactory.java
index 1292d2f..d5878fd 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessorFactory.java
@@ -203,7 +203,7 @@ public class DocBasedVersionConstraintsProcessorFactory extends UpdateRequestPro
           userVersionField.getType().getValueSource(userVersionField, null);
         } catch (Exception e) {
           useFieldCache = false;
-          log.warn("Can't use fieldcache/valuesource: {}", e.getMessage());
+          log.warn("Can't use fieldcache/valuesource: ", e);
         }
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java
index 37fe6ac..90edc57 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DocExpirationUpdateProcessorFactory.java
@@ -432,12 +432,10 @@ public final class DocExpirationUpdateProcessorFactory
 
           log.info("Finished periodic deletion of expired docs");
         } catch (IOException ioe) {
-          log.error("IOException in periodic deletion of expired docs: {}",
-                    ioe.getMessage(), ioe);
+          log.error("IOException in periodic deletion of expired docs: ", ioe);
           // DO NOT RETHROW: ScheduledExecutor will suppress subsequent executions
         } catch (RuntimeException re) {
-          log.error("Runtime error in periodic deletion of expired docs: {}",
-                    re.getMessage(), re);
+          log.error("Runtime error in periodic deletion of expired docs: ", re);
           // DO NOT RETHROW: ScheduledExecutor will suppress subsequent executions
         } finally {
           SolrRequestInfo.clearRequestInfo();
diff --git a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
index 8843a4f..a1f61d1 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
@@ -255,7 +255,7 @@ public class TolerantUpdateProcessor extends UpdateRequestProcessor {
         NamedList<String> remoteErrMetadata = remoteErr.getMetadata();
 
         if (null == remoteErrMetadata) {
-          log.warn("remote error has no metadata to aggregate: {} {}", remoteErr.getMessage(), remoteErr);
+          log.warn("remote error has no metadata to aggregate: ", remoteErr);
           continue;
         }
 
diff --git a/solr/core/src/java/org/apache/solr/update/processor/URLClassifyProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/URLClassifyProcessor.java
index 9d727c7..fc75a45 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/URLClassifyProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/URLClassifyProcessor.java
@@ -183,7 +183,7 @@ public class URLClassifyProcessor extends UpdateRequestProcessor {
           }
           log.debug("{}", document);
         } catch (MalformedURLException | URISyntaxException e) {
-          log.warn("cannot get the normalized url for '{}' due to {}", url, e.getMessage());
+          log.warn("cannot get the normalized url for '{}' due to ", url, e);
         }
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 9e188f9..aa68726 100755
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -677,8 +677,7 @@ public class SolrCLI implements CLIO {
         }
         if (--attempts > 0 && checkCommunicationError(exc)) {
           if (!isFirstAttempt) // only show the log warning after the second attempt fails
-            log.warn("Request to {} failed due to: {}, sleeping for 5 seconds before re-trying the request ..."
-                , getUrl, exc.getMessage());
+            log.warn("Request to {} failed, sleeping for 5 seconds before re-trying the request ...", getUrl, exc);
           try {
             Thread.sleep(5000);
           } catch (InterruptedException ie) { Thread.interrupted(); }
@@ -2233,7 +2232,7 @@ public class SolrCLI implements CLIO {
 
         zkClient.upConfig(confPath, confName);
       } catch (Exception e) {
-        log.error("Could not complete upconfig operation for reason: {}", e.getMessage());
+        log.error("Could not complete upconfig operation for reason: ", e);
         throw (e);
       }
     }
@@ -2306,7 +2305,7 @@ public class SolrCLI implements CLIO {
 
         zkClient.downConfig(confName, configSetPath);
       } catch (Exception e) {
-        log.error("Could not complete downconfig operation for reason: {}", e.getMessage());
+        log.error("Could not complete downconfig operation for reason: ", e);
         throw (e);
       }
 
@@ -2382,7 +2381,7 @@ public class SolrCLI implements CLIO {
             " recurse: " + Boolean.toString(recurse));
         zkClient.clean(znode);
       } catch (Exception e) {
-        log.error("Could not complete rm operation for reason: {}", e.getMessage());
+        log.error("Could not complete rm operation for reason: ", e);
         throw (e);
       }
 
@@ -2450,7 +2449,7 @@ public class SolrCLI implements CLIO {
             " recurse: " + Boolean.toString(recurse), cli);
         stdout.print(zkClient.listZnode(znode, recurse));
       } catch (Exception e) {
-        log.error("Could not complete ls operation for reason: {}", e.getMessage());
+        log.error("Could not complete ls operation for reason: ", e);
         throw (e);
       }
     }
@@ -2509,7 +2508,7 @@ public class SolrCLI implements CLIO {
         echo("Creating Zookeeper path " + znode + " on ZooKeeper at " + zkHost);
         zkClient.makePath(znode, true);
       } catch (Exception e) {
-        log.error("Could not complete mkroot operation for reason: {}", e.getMessage());
+        log.error("Could not complete mkroot operation for reason: ", e);
         throw (e);
       }
     }
@@ -2600,7 +2599,7 @@ public class SolrCLI implements CLIO {
         }
         zkClient.zkTransfer(srcName, srcIsZk, dstName, dstIsZk, recurse);
       } catch (Exception e) {
-        log.error("Could not complete the zk operation for reason: {}", e.getMessage());
+        log.error("Could not complete the zk operation for reason: ", e);
         throw (e);
       }
     }
@@ -2678,7 +2677,7 @@ public class SolrCLI implements CLIO {
         echo("Moving Znode " + source + " to " + dest + " on ZooKeeper at " + zkHost);
         zkClient.moveZnode(source, dest);
       } catch (Exception e) {
-        log.error("Could not complete mv operation for reason: {}", e.getMessage());
+        log.error("Could not complete mv operation for reason: ", e);
         throw (e);
       }
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
index 9f12d7e..35daa44 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CollectionsAPISolrJTest.java
@@ -721,7 +721,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
       try {
         restartTime = getCoreStatus(leader).getCoreStartTime().getTime();
       } catch (Exception e) {
-        log.warn("Exception getting core start time: {}", e.getMessage());
+        log.warn("Exception getting core start time: ", e);
         return false;
       }
       return restartTime > coreStartTime.get();
@@ -786,7 +786,7 @@ public class CollectionsAPISolrJTest extends SolrCloudTestCase {
       try {
         restartTime = getCoreStatus(leader).getCoreStartTime().getTime();
       } catch (Exception e) {
-        log.warn("Exception getting core start time: {}", e.getMessage());
+        log.warn("Exception getting core start time: ", e);
         return false;
       }
       return restartTime > coreStartTime.get();
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
index cb86d51..899efb3 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionReloadTest.java
@@ -64,7 +64,7 @@ public class CollectionReloadTest extends SolrCloudTestCase {
       try {
         restartTime = getCoreStatus(leader).getCoreStartTime().getTime();
       } catch (Exception e) {
-        log.warn("Exception getting core start time: {}", e.getMessage());
+        log.warn("Exception getting core start time: ", e);
         return false;
       }
       return restartTime > coreStartTime;
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIAsyncDistributedZkTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIAsyncDistributedZkTest.java
index c0214f8..a9fdcae 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIAsyncDistributedZkTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/CollectionsAPIAsyncDistributedZkTest.java
@@ -252,7 +252,7 @@ public class CollectionsAPIAsyncDistributedZkTest extends SolrCloudTestCase {
               numSuccess.incrementAndGet();
             } catch (SolrServerException e) {
               if (log.isInfoEnabled()) {
-                log.info(e.getMessage());
+                log.info("Exception during collection reloading, we were waiting for one: ", e);
               }
               assertEquals("Task with the same requestid already exists.", e.getMessage());
               numFailure.incrementAndGet();
diff --git a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
index 24997e7..bdc4b277 100644
--- a/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/ChangedSchemaMergeTest.java
@@ -141,8 +141,8 @@ public class ChangedSchemaMergeTest extends SolrTestCaseJ4 {
       changed.getUpdateHandler().commit(new CommitUpdateCommand(req, false));
       changed.getUpdateHandler().commit(new CommitUpdateCommand(req, true));
     } catch (Throwable e) {
-      log.error("Test exception, logging so not swallowed if there is a (finally) shutdown exception: {}"
-          , e.getMessage(), e);
+      log.error("Test exception, logging so not swallowed if there is a (finally) shutdown exception: "
+          , e);
       throw e;
     } finally {
       if (cc != null) cc.shutdown();
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientNodeStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientNodeStateProvider.java
index 1b394ee..4f4b7d9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientNodeStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientNodeStateProvider.java
@@ -366,7 +366,7 @@ public class SolrClientNodeStateProvider implements NodeStateProvider, MapWriter
 
           if (hasIOExceptionCause) {
             if (log.isInfoEnabled()) {
-              log.info("Error on getting remote info, trying again: {}", e.getMessage());
+              log.info("Error on getting remote info, trying again: ", e);
             }
             Thread.sleep(500);
           } else {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java
index a1bf842..40cc649 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/XMLResponseParser.java
@@ -176,7 +176,7 @@ public class XMLResponseParser extends ResponseParser
         }
         catch( Exception ex ) {
           if (log.isInfoEnabled()) {
-            log.info("{}", ex.getMessage(), ex);
+            log.info("Error reading date: {}", txt, ex);
           }
         }
         return null;
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
index 4b641f0..5139259 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
@@ -534,7 +534,7 @@ public class ZkStateReader implements SolrCloseable {
                 }
               }
             } catch (KeeperException.ConnectionLossException | KeeperException.SessionExpiredException e) {
-              log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+              log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
             } catch (KeeperException e) {
               log.error("A ZK error has occurred", e);
               throw new ZooKeeperException(ErrorCode.SERVER_ERROR, "", e);
@@ -618,7 +618,7 @@ public class ZkStateReader implements SolrCloseable {
       try {
         children = zkClient.getChildren(COLLECTIONS_ZKNODE, watcher, true);
       } catch (KeeperException.NoNodeException e) {
-        log.warn("Error fetching collection names: [{}]", e.getMessage());
+        log.warn("Error fetching collection names: ", e);
         // fall through
       }
       if (children == null || children.isEmpty()) {
@@ -1266,7 +1266,7 @@ public class ZkStateReader implements SolrCloseable {
         }
 
       } catch (KeeperException.SessionExpiredException | KeeperException.ConnectionLossException e) {
-        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
       } catch (KeeperException e) {
         log.error("Unwatched collection: [{}]", coll, e);
         throw new ZooKeeperException(ErrorCode.SERVER_ERROR, "A ZK error has occurred", e);
@@ -1352,7 +1352,7 @@ public class ZkStateReader implements SolrCloseable {
           }
         }
       } catch (KeeperException.SessionExpiredException | KeeperException.ConnectionLossException e) {
-        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
       } catch (KeeperException e) {
         log.error("Lost collection property watcher for {} due to ZK error", coll, e);
         throw new ZooKeeperException(ErrorCode.SERVER_ERROR, "A ZK error has occurred", e);
@@ -1392,7 +1392,7 @@ public class ZkStateReader implements SolrCloseable {
       try {
         refreshCollectionList(this);
       } catch (KeeperException.SessionExpiredException | KeeperException.ConnectionLossException e) {
-        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
       } catch (KeeperException e) {
         log.error("A ZK error has occurred", e);
         throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "A ZK error has occurred", e);
@@ -1425,7 +1425,7 @@ public class ZkStateReader implements SolrCloseable {
       try {
         refreshLiveNodes(this);
       } catch (KeeperException.SessionExpiredException | KeeperException.ConnectionLossException e) {
-        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
       } catch (KeeperException e) {
         log.error("A ZK error has occurred", e);
         throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "A ZK error has occurred", e);
@@ -2086,7 +2086,7 @@ public class ZkStateReader implements SolrCloseable {
         // /aliases.json will not always exist
       } catch (KeeperException.ConnectionLossException | KeeperException.SessionExpiredException e) {
         // note: aliases.json is required to be present
-        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: [{}]", e.getMessage());
+        log.warn("ZooKeeper watch triggered, but Solr cannot talk to ZK: ", e);
       } catch (KeeperException e) {
         log.error("A ZK error has occurred", e);
         throw new ZooKeeperException(ErrorCode.SERVER_ERROR, "A ZK error has occurred", e);
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/RetryUtil.java b/solr/solrj/src/java/org/apache/solr/common/util/RetryUtil.java
index 2f148bd..422b505 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/RetryUtil.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/RetryUtil.java
@@ -50,7 +50,7 @@ public class RetryUtil {
       } catch (Throwable t) {
         if (isInstanceOf(classes, t) && System.nanoTime() < timeout) {
           if (log.isInfoEnabled()) {
-            log.info("Retry due to Throwable, {} {}", t.getClass().getName(), t.getMessage());
+            log.info("Retry due to Throwable, {} ", t.getClass().getName(), t);
           }
           Thread.sleep(intervalms);
           continue;
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/XMLErrorLogger.java b/solr/solrj/src/java/org/apache/solr/common/util/XMLErrorLogger.java
index cee109a..23917a2 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/XMLErrorLogger.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/XMLErrorLogger.java
@@ -38,7 +38,7 @@ public final class XMLErrorLogger implements ErrorHandler,ErrorListener,XMLRepor
 
   @Override
   public void warning(SAXParseException e) {
-    log.warn("XML parse warning in '{}', line {}, column {}: {}", e.getSystemId(), e.getLineNumber(), e.getColumnNumber(), e.getMessage());
+    log.warn("XML parse warning in '{}', line {}, column {}:", e.getSystemId(), e.getLineNumber(), e.getColumnNumber(), e);
   }
 
   @Override
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java b/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
index f54fc0b..c0306f4 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/LargeVolumeTestBase.java
@@ -120,7 +120,7 @@ public abstract class LargeVolumeTestBase extends EmbeddedSolrServerTestBase
         } catch (Exception e) {
           // a commit/optimize can fail with a too many warming searchers exception
           if (log.isInfoEnabled()) {
-            log.info("Caught benign exception during commit: {}", e.getMessage());
+            log.info("Caught benign exception during commit: ", e);
           }
         }
         if (!(client instanceof EmbeddedSolrServer)) {