You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2022/02/04 21:02:17 UTC

[accumulo] branch 1.10 updated: Swap in reload4j instead of log4j1.2 (#2458)

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

ctubbsii pushed a commit to branch 1.10
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/1.10 by this push:
     new bbae5c6  Swap in reload4j instead of log4j1.2 (#2458)
bbae5c6 is described below

commit bbae5c6da9dbfa25b4dedf2e79e9a969497d217c
Author: Christopher Tubbs <ct...@apache.org>
AuthorDate: Fri Feb 4 16:02:09 2022 -0500

    Swap in reload4j instead of log4j1.2 (#2458)
    
    * Swap in reload4j 1.2.18.3 instead of log4j1.2
    
    For the 1.10.x branch, use reload4j instead of the EOL log4j1.2, which
    contains several CVEs and is no longer supported by its Apache project.
    Reload4j is the continuation of log4j1.2, forked from the Apache
    project by the original log4j1 creator. It is largely a drop-in
    replacement for log4j1.2.
    
    * Use reload4j 1.2.18.4 and disable ZK log4j1.2 jmx
    
    Partially backport the disabling of jmx for log4j1.2 from #1531 in order
    to allow MiniAccumuloCluster to function with the latest reload4j, which
    removed jmx features. This is necessary for certain older versions of
    ZooKeeper that fail to properly detect whether log4j has jmx support
    (See https://issues.apache.org/jira/browse/ZOOKEEPER-3737)
---
 assemble/bin/accumulo                              | 14 +---
 assemble/pom.xml                                   |  7 +-
 assemble/src/main/assemblies/component.xml         |  3 +-
 core/pom.xml                                       | 10 +--
 docs/pom.xml                                       | 11 ++-
 examples/simple/pom.xml                            |  8 +--
 fate/pom.xml                                       |  8 +--
 iterator-test-harness/pom.xml                      |  8 +--
 maven-plugin/src/it/plugin-test/pom.xml            | 10 +--
 minicluster/pom.xml                                | 10 +--
 .../minicluster/impl/MiniAccumuloClusterImpl.java  |  5 ++
 pom.xml                                            | 81 +++++++++++++++++++---
 proxy/pom.xml                                      | 10 +--
 server/base/pom.xml                                | 10 +--
 server/gc/pom.xml                                  | 10 +--
 server/master/pom.xml                              | 10 +--
 server/monitor/pom.xml                             | 10 +--
 server/native/pom.xml                              |  2 +-
 server/tracer/pom.xml                              | 10 +--
 server/tserver/pom.xml                             | 10 +--
 shell/pom.xml                                      |  8 +--
 start/pom.xml                                      | 13 ++--
 test/pom.xml                                       | 12 ++--
 23 files changed, 180 insertions(+), 100 deletions(-)

diff --git a/assemble/bin/accumulo b/assemble/bin/accumulo
index df8d297..8dc4fc2 100755
--- a/assemble/bin/accumulo
+++ b/assemble/bin/accumulo
@@ -109,20 +109,12 @@ shell)   export ACCUMULO_OPTS="${ACCUMULO_GENERAL_OPTS} ${ACCUMULO_SHELL_OPTS}"
 esac
 
 XML_FILES="${ACCUMULO_CONF_DIR}"
-LOG4J_JAR=$(find -H "${HADOOP_PREFIX}/lib" "${HADOOP_PREFIX}"/share/hadoop/common/lib -regex '.*/log4j-[0-9.]*[.]jar$' -print 2>/dev/null | head -1)
-SLF4J_JARS="${ACCUMULO_HOME}/lib/slf4j-api.jar:${ACCUMULO_HOME}/lib/slf4j-log4j12.jar"
-
-# The `find` command could fail for environmental reasons or bad configuration
-# Avoid trying to run Accumulo when we can't find the jar
-if [[ -z "${LOG4J_JAR}" && -z "${CLASSPATH}" ]]; then
-   echo "Could not locate Log4j jar in Hadoop installation at ${HADOOP_PREFIX}"
-   exit 1
-fi
+SLF4J_JARS="${ACCUMULO_HOME}/lib/slf4j-api.jar:${ACCUMULO_HOME}/lib/slf4j-reload4j.jar:${ACCUMULO_HOME}/lib/reload4j.jar"
 
 if [[ -n "$CLASSPATH" ]]; then
-  CLASSPATH="${XML_FILES}:${START_JAR}:${SLF4J_JARS}:${LOG4J_JAR}:${CLASSPATH}"
+  CLASSPATH="${XML_FILES}:${START_JAR}:${SLF4J_JARS}:${CLASSPATH}"
 else
-  CLASSPATH="${XML_FILES}:${START_JAR}:${SLF4J_JARS}:${LOG4J_JAR}"
+  CLASSPATH="${XML_FILES}:${START_JAR}:${SLF4J_JARS}"
 fi
 
 if [[ -z "${JAVA_HOME}" || ! -d "${JAVA_HOME}" ]]; then
diff --git a/assemble/pom.xml b/assemble/pom.xml
index cc2d6e7..84f9a5c 100644
--- a/assemble/pom.xml
+++ b/assemble/pom.xml
@@ -28,6 +28,11 @@
   <description>Apache Accumulo packages.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
       <optional>true</optional>
@@ -242,7 +247,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <optional>true</optional>
     </dependency>
   </dependencies>
diff --git a/assemble/src/main/assemblies/component.xml b/assemble/src/main/assemblies/component.xml
index e5a83ea..3df09db 100644
--- a/assemble/src/main/assemblies/component.xml
+++ b/assemble/src/main/assemblies/component.xml
@@ -30,6 +30,7 @@
         pom.xml section which executes the maven-dependency-plugin to generate a
         version listing for packaged artifacts -->
         <include>${groupId}:${artifactId}-*</include>
+        <include>ch.qos.reload4j:reload4j</include>
         <include>com.beust:jcommander</include>
         <include>com.google.code.gson:gson</include>
         <include>com.google.guava:guava</include>
@@ -55,7 +56,7 @@
         <include>org.eclipse.jetty:jetty-servlet</include>
         <include>org.eclipse.jetty:jetty-util</include>
         <include>org.slf4j:slf4j-api</include>
-        <include>org.slf4j:slf4j-log4j12</include>
+        <include>org.slf4j:slf4j-reload4j</include>
       </includes>
       <excludes>
         <exclude>${groupId}:${artifactId}-docs</exclude>
diff --git a/core/pom.xml b/core/pom.xml
index 8159cdb..b8ac1bd 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -27,6 +27,10 @@
   <description>Apache Accumulo core libraries.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -72,10 +76,6 @@
       <artifactId>jline</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-fate</artifactId>
     </dependency>
@@ -119,7 +119,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/docs/pom.xml b/docs/pom.xml
index b2cbd4f..a71467a 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -30,6 +30,13 @@
     <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
+      <scope>runtime</scope>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-reload4j</artifactId>
+      <scope>runtime</scope>
       <optional>true</optional>
     </dependency>
   </dependencies>
@@ -109,7 +116,7 @@
             <phase>compile</phase>
             <configuration>
               <mainClass>org.apache.accumulo.core.conf.ConfigurationDocGen</mainClass>
-              <classpathScope>compile</classpathScope>
+              <classpathScope>runtime</classpathScope>
               <arguments>
                 <argument>--generate-html</argument>
                 <argument>${project.build.directory}/config.html</argument>
@@ -124,7 +131,7 @@
             <phase>compile</phase>
             <configuration>
               <mainClass>org.apache.accumulo.core.conf.ConfigurationDocGen</mainClass>
-              <classpathScope>compile</classpathScope>
+              <classpathScope>runtime</classpathScope>
               <arguments>
                 <argument>--generate-asciidoc</argument>
                 <argument>${project.build.directory}/asciidoc/appendices/config.txt</argument>
diff --git a/examples/simple/pom.xml b/examples/simple/pom.xml
index 9860cac..9c6ed94 100644
--- a/examples/simple/pom.xml
+++ b/examples/simple/pom.xml
@@ -28,6 +28,10 @@
   <description>Simple Apache Accumulo examples.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -53,10 +57,6 @@
       <artifactId>jline</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
diff --git a/fate/pom.xml b/fate/pom.xml
index 03f55c5..4c64b7e 100644
--- a/fate/pom.xml
+++ b/fate/pom.xml
@@ -27,6 +27,10 @@
   <description>A FAult-Tolerant Executor library used by Apache Accumulo.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
     </dependency>
@@ -35,10 +39,6 @@
       <artifactId>commons-lang</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.zookeeper</groupId>
       <artifactId>zookeeper</artifactId>
     </dependency>
diff --git a/iterator-test-harness/pom.xml b/iterator-test-harness/pom.xml
index 69f1d42..7b1f06f 100644
--- a/iterator-test-harness/pom.xml
+++ b/iterator-test-harness/pom.xml
@@ -26,16 +26,16 @@
   <name>Apache Accumulo Iterator Test Harness</name>
   <description>A library for testing Apache Accumulo Iterators.</description>
   <dependencies>
+    <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
     <!--TODO Don't force downstream users to have JUnit -->
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
diff --git a/maven-plugin/src/it/plugin-test/pom.xml b/maven-plugin/src/it/plugin-test/pom.xml
index e31d173..ebe0121 100644
--- a/maven-plugin/src/it/plugin-test/pom.xml
+++ b/maven-plugin/src/it/plugin-test/pom.xml
@@ -36,6 +36,10 @@
 
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
     </dependency>
@@ -64,10 +68,6 @@
       <artifactId>commons-logging</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-minicluster</artifactId>
     </dependency>
@@ -81,7 +81,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/minicluster/pom.xml b/minicluster/pom.xml
index 818da42..25a8695 100644
--- a/minicluster/pom.xml
+++ b/minicluster/pom.xml
@@ -27,6 +27,10 @@
   <description>A library for launching and running a standalone instance of Apache Accumulo for testing.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -48,10 +52,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -113,7 +113,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java b/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
index 2065002..7b6de2c 100644
--- a/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
+++ b/minicluster/src/main/java/org/apache/accumulo/minicluster/impl/MiniAccumuloClusterImpl.java
@@ -364,6 +364,11 @@ public class MiniAccumuloClusterImpl implements AccumuloCluster {
   Process _exec(Class<?> clazz, ServerType serverType, Map<String,String> configOverrides,
       String... args) throws IOException {
     List<String> jvmOpts = new ArrayList<>();
+    if (serverType == ServerType.ZOOKEEPER) {
+      // disable zookeeper's log4j 1.2 jmx support, which requires old versions of log4j 1.2
+      // and won't work with reload4j or log4j2
+      jvmOpts.add("-Dzookeeper.jmx.log4j.disable=true");
+    }
     jvmOpts.add("-Xmx" + config.getMemory(serverType));
     if (configOverrides != null && !configOverrides.isEmpty()) {
       File siteFile = File.createTempFile("accumulo-site", ".xml", config.getConfDir());
diff --git a/pom.xml b/pom.xml
index 47441b0..702d91a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,7 +144,7 @@
     <rat.consoleOutput>true</rat.consoleOutput>
     <!-- surefire/failsafe plugin option -->
     <reuseForks>false</reuseForks>
-    <slf4j.version>1.7.25</slf4j.version>
+    <slf4j.version>1.7.35</slf4j.version>
     <sourceReleaseAssemblyDescriptor>source-release-tar</sourceReleaseAssemblyDescriptor>
     <surefire.excludedGroups />
     <surefire.failIfNoSpecifiedTests>false</surefire.failIfNoSpecifiedTests>
@@ -159,6 +159,11 @@
   <dependencyManagement>
     <dependencies>
       <dependency>
+        <groupId>ch.qos.reload4j</groupId>
+        <artifactId>reload4j</artifactId>
+        <version>1.2.18.4</version>
+      </dependency>
+      <dependency>
         <groupId>com.beust</groupId>
         <artifactId>jcommander</artifactId>
         <version>1.78</version>
@@ -241,11 +246,6 @@
         <version>4.13.1</version>
       </dependency>
       <dependency>
-        <groupId>log4j</groupId>
-        <artifactId>log4j</artifactId>
-        <version>1.2.17</version>
-      </dependency>
-      <dependency>
         <groupId>org.apache.accumulo</groupId>
         <artifactId>accumulo-core</artifactId>
         <version>${project.version}</version>
@@ -389,6 +389,16 @@
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-client</artifactId>
         <version>${hadoop.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.slf4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>log4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
       <dependency>
         <groupId>org.apache.hadoop</groupId>
@@ -414,12 +424,32 @@
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-minicluster</artifactId>
         <version>${hadoop.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.slf4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>log4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-minikdc</artifactId>
         <!-- this version works better with java 11 than Hadoop 2 versions -->
         <version>3.0.0</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.slf4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>log4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
       <dependency>
         <groupId>org.apache.hadoop</groupId>
@@ -470,6 +500,16 @@
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
         <version>${zookeeper.version}</version>
+        <exclusions>
+          <exclusion>
+            <groupId>org.slf4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>log4j</groupId>
+            <artifactId>*</artifactId>
+          </exclusion>
+        </exclusions>
       </dependency>
       <dependency>
         <groupId>org.bouncycastle</groupId>
@@ -548,12 +588,12 @@
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
+        <artifactId>slf4j-nop</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-nop</artifactId>
+        <artifactId>slf4j-reload4j</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
     </dependencies>
@@ -872,6 +912,31 @@
               </rules>
             </configuration>
           </execution>
+          <execution>
+            <id>enforce-accumulo-rules</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <phase>validate</phase>
+            <configuration>
+              <rules>
+                <bannedDependencies>
+                  <excludes>
+                    <!-- we redirect logging to reload4j, so we should have those bridges instead -->
+                    <exclude>ch.qos.logback:*</exclude>
+                    <exclude>log4j:*</exclude>
+                    <exclude>org.apache.logging.log4j:*</exclude>
+                    <exclude>org.slf4j:*</exclude>
+                  </excludes>
+                  <includes>
+                    <!-- only allow API and reload4j jars, but no other slf4j implementations -->
+                    <include>org.slf4j:slf4j-api</include>
+                    <include>org.slf4j:slf4j-reload4j</include>
+                  </includes>
+                </bannedDependencies>
+              </rules>
+            </configuration>
+          </execution>
         </executions>
       </plugin>
       <plugin>
diff --git a/proxy/pom.xml b/proxy/pom.xml
index 3dc8223..c726a22 100644
--- a/proxy/pom.xml
+++ b/proxy/pom.xml
@@ -27,6 +27,10 @@
   <description>A server for Apache Accumulo that proxies connections from any language supported by Apache Thrift.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -44,10 +48,6 @@
       <artifactId>commons-io</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -84,7 +84,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/server/base/pom.xml b/server/base/pom.xml
index 2ca5706..7c6faf5 100644
--- a/server/base/pom.xml
+++ b/server/base/pom.xml
@@ -28,6 +28,10 @@
   <description>A common base library for Apache Accumulo servers.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -69,10 +73,6 @@
       <artifactId>jline</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -102,7 +102,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>runtime</scope>
     </dependency>
     <dependency>
diff --git a/server/gc/pom.xml b/server/gc/pom.xml
index 4597496..ae1e476 100644
--- a/server/gc/pom.xml
+++ b/server/gc/pom.xml
@@ -28,6 +28,10 @@
   <description>The garbage collecting server for Apache Accumulo to clean up unused files.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -41,10 +45,6 @@
       <artifactId>guava</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -70,7 +70,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/server/master/pom.xml b/server/master/pom.xml
index cf0f97e..04c235e 100644
--- a/server/master/pom.xml
+++ b/server/master/pom.xml
@@ -28,6 +28,10 @@
   <description>The master server for Apache Accumulo for load balacing and other system-wide operations.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -45,10 +49,6 @@
       <artifactId>commons-codec</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -82,7 +82,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/server/monitor/pom.xml b/server/monitor/pom.xml
index 64435b0..816643b 100644
--- a/server/monitor/pom.xml
+++ b/server/monitor/pom.xml
@@ -28,6 +28,10 @@
   <description>A web server for monitoring Apache Accumulo.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.auto.service</groupId>
       <artifactId>auto-service</artifactId>
       <optional>true</optional>
@@ -49,10 +53,6 @@
       <artifactId>jline</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -112,7 +112,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>runtime</scope>
     </dependency>
     <dependency>
diff --git a/server/native/pom.xml b/server/native/pom.xml
index 8b18181..5c135b4 100644
--- a/server/native/pom.xml
+++ b/server/native/pom.xml
@@ -48,7 +48,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/server/tracer/pom.xml b/server/tracer/pom.xml
index 85848f2..abb6adf 100644
--- a/server/tracer/pom.xml
+++ b/server/tracer/pom.xml
@@ -28,15 +28,15 @@
   <description>The tracer server for Apache Accumulo to listen for, and store, distributed tracing messages.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.auto.service</groupId>
       <artifactId>auto-service</artifactId>
       <optional>true</optional>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -80,7 +80,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/server/tserver/pom.xml b/server/tserver/pom.xml
index e906424..66b8a40 100644
--- a/server/tserver/pom.xml
+++ b/server/tserver/pom.xml
@@ -28,6 +28,10 @@
   <description>The tablet server for Apache Accumulo to host tablets of data tables.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -57,10 +61,6 @@
       <artifactId>commons-lang</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -94,7 +94,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/shell/pom.xml b/shell/pom.xml
index eb91c2c..22dc9d2 100644
--- a/shell/pom.xml
+++ b/shell/pom.xml
@@ -27,6 +27,10 @@
   <description>An interactive shell for accessing Apache Accumulo via a command line interface.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -72,10 +76,6 @@
       <artifactId>jline</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
diff --git a/start/pom.xml b/start/pom.xml
index 409716f..1bde901 100644
--- a/start/pom.xml
+++ b/start/pom.xml
@@ -27,6 +27,10 @@
   <description>A library for launching Apache Accumulo services.</description>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
@@ -35,10 +39,6 @@
       <artifactId>commons-logging</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-vfs2</artifactId>
     </dependency>
@@ -81,6 +81,11 @@
       <artifactId>powermock-reflect</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-reload4j</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <pluginManagement>
diff --git a/test/pom.xml b/test/pom.xml
index a7a70fc..abb3492 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -30,6 +30,10 @@
   </properties>
   <dependencies>
     <dependency>
+      <groupId>ch.qos.reload4j</groupId>
+      <artifactId>reload4j</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.beust</groupId>
       <artifactId>jcommander</artifactId>
     </dependency>
@@ -71,10 +75,6 @@
       <artifactId>junit</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.accumulo</groupId>
       <artifactId>accumulo-core</artifactId>
     </dependency>
@@ -180,7 +180,7 @@
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
+      <artifactId>slf4j-reload4j</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.accumulo</groupId>
@@ -302,7 +302,7 @@
                   <exclude>com.google.auto</exclude>
                   <exclude>javax.servlet:servlet-api</exclude>
                   <exclude>org.apache.accumulo:accumulo-native</exclude>
-                  <exclude>org.slf4j:slf4j-log4j12</exclude>
+                  <exclude>org.slf4j:slf4j-reload4j</exclude>
                 </excludes>
               </artifactSet>
               <shadedArtifactAttached>true</shadedArtifactAttached>