You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by gr...@apache.org on 2017/03/21 18:21:18 UTC

[tika] branch logging-refactored updated (a5e0abe -> 02a65e0)

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

grossws pushed a change to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git.

  discards  a5e0abe   Bumped pax-exam version to 4.10.0
  discards  dd68c91   Fixed tika-bundle integration test
  discards  3aff5f6   Added explicit test scope for junit
  discards  8348808   Cosmetics: extra spaces and diamond operator
  discards  9f8affc   TIKA-2245 Logging unification
  discards  845c789   Reformat POMs a little
  discards  f73f422   Added logging deps to unify it in parsers
      adds  7894819   clean up unit tests, and modify two ODF tests based on feedback of broken build on user list
      adds  a9145d8    modify two ODF tests based on feedback of broken build on user list -- remove parsing of embedded files.
       new  7aac935   Added logging deps to unify it in parsers
       new  23cf330   Reformat POMs a little
       new  c2c2fec   TIKA-2245 Logging unification
       new  8c6d6d6   Cosmetics: extra spaces and diamond operator
       new  03ab443   Added explicit test scope for junit
       new  4ee4625   Fixed tika-bundle integration test
       new  02a65e0   Bumped pax-exam version to 4.10.0

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (a5e0abe)
            \
             N -- N -- N   refs/heads/logging-refactored (02a65e0)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omits" are not gone; other references still
refer to them.  Any revisions marked "discards" are gone forever.

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/tika/parser/mail/RFC822ParserTest.java     |  1 -
 .../java/org/apache/tika/parser/odf/ODFParserTest.java    | 15 ++++++++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
['"commits@tika.apache.org" <co...@tika.apache.org>'].

[tika] 06/07: Fixed tika-bundle integration test

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 4ee4625463b61c50090cf45699d25be61731727a
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Tue Mar 21 20:38:33 2017 +0300

    Fixed tika-bundle integration test
---
 tika-bundle/pom.xml                                | 14 ++++++------
 .../test/java/org/apache/tika/bundle/BundleIT.java | 25 ++++++++++++++++------
 tika-bundle/src/test/resources/exam.properties     |  1 +
 3 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/tika-bundle/pom.xml b/tika-bundle/pom.xml
index d785c89..2a0a18e 100644
--- a/tika-bundle/pom.xml
+++ b/tika-bundle/pom.xml
@@ -163,6 +163,7 @@
               !org.apache.ctakes.*,
               !org.apache.uima.*,
               *,
+              org.slf4j, org.slf4j.event, org.slf4j.helpers, org.slf4j.spi,
               org.apache.tika.fork,
               android.util;resolution:=optional,
               com.adobe.xmp;resolution:=optional,
@@ -258,7 +259,6 @@
               org.osgi.framework;resolution:=optional,
               org.quartz;resolution:=optional,
               org.quartz.impl;resolution:=optional,
-              org.slf4j;resolution:=optional,
               org.sqlite;resolution:=optional,
               org.w3c.dom;resolution:=optional,
               org.relaxng.datatype;resolution:=optional,
@@ -356,6 +356,11 @@
               org.apache.http.protocol;resolution:=optional,
               org.apache.http.util;resolution:=optional
             </Import-Package>
+            <DynamicImport-Package>
+              org.slf4j.impl, org.slf4j.bridge,
+              org.apache.log4j, org.apache.log4j.*,
+              org.apache.commons.logging, org.apache.commons.logging.*
+            </DynamicImport-Package>
           </instructions>
         </configuration>
       </plugin>
@@ -422,13 +427,6 @@
             </goals>
           </execution>
         </executions>
-        <configuration>
-          <systemPropertyVariables>
-            <org.ops4j.pax.logging.DefaultServiceLog.level>
-              WARN
-            </org.ops4j.pax.logging.DefaultServiceLog.level>
-          </systemPropertyVariables>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java b/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
index 77e60c3..d81cb90 100644
--- a/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
+++ b/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
@@ -22,7 +22,9 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.ops4j.pax.exam.CoreOptions.bundle;
 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 
 import javax.inject.Inject;
 import java.io.ByteArrayInputStream;
@@ -33,6 +35,7 @@ import java.io.InputStream;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.net.URISyntaxException;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.jar.Attributes;
@@ -59,6 +62,7 @@ import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
 import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
 import org.ops4j.pax.exam.spi.reactors.PerMethod;
+import org.ops4j.pax.exam.util.PathUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -67,9 +71,6 @@ import org.xml.sax.ContentHandler;
 @RunWith(PaxExam.class)
 @ExamReactorStrategy(PerMethod.class)
 public class BundleIT {
-
-    private final File TARGET = new File("target");
-
     @Inject
     private Parser defaultParser;
 
@@ -79,13 +80,22 @@ public class BundleIT {
     @Inject
     private BundleContext bc;
 
+    private String log4jConfigPath = "file:" + PathUtils.getBaseDir() + "/src/test/resources/log4j.properties";
+    private String testBundlesPath = "file:" + PathUtils.getBaseDir() + "/target/test-bundles/";
+
     @Configuration
-    public Option[] configuration() throws IOException, URISyntaxException {
-        File base = new File(TARGET, "test-bundles");
+    public Option[] configuration() throws IOException, URISyntaxException, ClassNotFoundException {
         return options(
+                bundle(testBundlesPath + "tika-core.jar"),
+                bundle(testBundlesPath + "tika-bundle.jar"),
                 junitBundles(),
-                bundle(new File(base, "tika-core.jar").toURI().toURL().toString()),
-                bundle(new File(base, "tika-bundle.jar").toURI().toURL().toString()));
+                mavenBundle("org.slf4j", "slf4j-api", "1.7.24"),
+                mavenBundle("org.slf4j", "slf4j-log4j12", "1.7.24").noStart(),
+                mavenBundle("org.slf4j", "jcl-over-slf4j", "1.7.24"),
+                mavenBundle("org.slf4j", "jul-to-slf4j", "1.7.24"),
+                mavenBundle("log4j", "log4j", "1.2.17"),
+                systemProperty("log4j.configuration").value(log4jConfigPath)
+        );
     }
 
     @Test
@@ -139,6 +149,7 @@ public class BundleIT {
     @Test
     public void testForkParser() throws Exception {
         ForkParser parser = new ForkParser(Activator.class.getClassLoader(), defaultParser);
+        parser.setJavaCommand(Arrays.asList("java", "-Xmx32m", "-Dlog4j.configuration=" + log4jConfigPath));
         String data = "<!DOCTYPE html>\n<html><body><p>test <span>content</span></p></body></html>";
         InputStream stream = new ByteArrayInputStream(data.getBytes(UTF_8));
         Writer writer = new StringWriter();
diff --git a/tika-bundle/src/test/resources/exam.properties b/tika-bundle/src/test/resources/exam.properties
new file mode 100644
index 0000000..93fdd86
--- /dev/null
+++ b/tika-bundle/src/test/resources/exam.properties
@@ -0,0 +1 @@
+pax.exam.logging = none

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 04/07: Cosmetics: extra spaces and diamond operator

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 8c6d6d652819e9fed0cebf23bfa72287b6e72f43
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Tue Mar 21 20:32:55 2017 +0300

    Cosmetics: extra spaces and diamond operator
---
 tika-batch/pom.xml                                 |  1 +
 .../java/org/apache/tika/batch/BatchProcess.java   |  9 ++---
 .../apache/tika/batch/BatchProcessDriverCLI.java   |  7 ++--
 .../apache/tika/batch/FileResourceConsumer.java    |  2 --
 .../apache/tika/batch/fs/FSBatchProcessCLI.java    |  3 +-
 .../batch/fs/RecursiveParserWrapperFSConsumer.java |  2 +-
 .../batch/fs/strawman/StrawManTikaAppDriver.java   |  6 ++--
 tika-bundle/pom.xml                                |  5 +--
 .../test/java/org/apache/tika/bundle/BundleIT.java | 41 +++++++++------------
 tika-bundle/test-bundles.xml                       |  2 +-
 .../main/java/org/apache/tika/fork/ForkClient.java | 13 +++----
 .../main/java/org/apache/tika/fork/ForkParser.java |  5 ++-
 tika-eval/pom.xml                                  | 30 +++++++---------
 .../org/apache/tika/parser/html/HtmlParser.java    |  2 +-
 .../org/apache/tika/parser/image/ImageParser.java  |  3 +-
 .../apache/tika/parser/ocr/TesseractOCRParser.java | 19 +++-------
 .../tika/parser/pot/PooledTimeSeriesParser.java    |  2 +-
 .../tika/parser/wordperfect/QPWTextExtractor.java  | 42 +++++++++++-----------
 .../tika/parser/ner/nltk/NLTKNERecogniserTest.java |  6 ++--
 tika-serialization/pom.xml                         |  3 +-
 tika-server/pom.xml                                |  1 +
 .../java/org/apache/tika/server/TikaServerCli.java |  9 +++--
 .../server/resource/RecursiveMetadataResource.java |  4 +--
 .../apache/tika/server/resource/TikaResource.java  |  2 +-
 .../tika/server/resource/TranslateResource.java    |  1 -
 .../tika/server/resource/UnpackerResource.java     |  4 +--
 26 files changed, 91 insertions(+), 133 deletions(-)

diff --git a/tika-batch/pom.xml b/tika-batch/pom.xml
index 354a2f9..db689f8 100644
--- a/tika-batch/pom.xml
+++ b/tika-batch/pom.xml
@@ -65,6 +65,7 @@
       <artifactId>commons-io</artifactId>
       <version>${commons.io.version}</version>
     </dependency>
+
     <dependency>
       <groupId>org.apache.tika</groupId>
       <artifactId>tika-core</artifactId>
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
index 2afad39..7a8fcd4 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
@@ -51,7 +51,6 @@ import org.slf4j.LoggerFactory;
  * communicate without interference with the parent process on stderr.
  */
 public class BatchProcess implements Callable<ParallelFileProcessingResult> {
-
     public enum BATCH_CONSTANTS {
         BATCH_PROCESS_EXCEEDED_MAX_ALIVE_TIME,
         BATCH_PROCESS_FATAL_MUST_RESTART
@@ -110,7 +109,7 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         this.consumersManager = consumersManager;
         this.reporter = reporter;
         this.interrupter = interrupter;
-        timedOuts = new ArrayBlockingQueue<FileStarted>(consumersManager.getConsumers().size());
+        timedOuts = new ArrayBlockingQueue<>(consumersManager.getConsumers().size());
         this.consumersManagerMaxMillis = consumersManager.getConsumersManagerMaxMillis();
     }
 
@@ -146,8 +145,7 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
             ExecutorService ex = Executors.newFixedThreadPool(numConsumers
                     + numNonConsumers);
             CompletionService<IFileProcessorFutureResult> completionService =
-                    new ExecutorCompletionService<IFileProcessorFutureResult>(
-                            ex);
+                    new ExecutorCompletionService<>(ex);
             TimeoutChecker timeoutChecker = new TimeoutChecker();
 
             try {
@@ -175,14 +173,12 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         State state = new State();
         LOG.info("BatchProcess starting up");
 
-
         state.start = new Date().getTime();
         completionService.submit(interrupter);
         completionService.submit(fileResourceCrawler);
         completionService.submit(reporter);
         completionService.submit(timeoutChecker);
 
-
         for (FileResourceConsumer consumer : consumersManager.getConsumers()) {
             completionService.submit(consumer);
         }
@@ -543,7 +539,6 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
     }
 
     private class TimeoutChecker implements Callable<IFileProcessorFutureResult> {
-
         @Override
         public TimeoutFutureResult call() throws Exception {
             while (timedOuts.size() == 0) {
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
index fdbfa86..6cf124c 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
@@ -36,7 +36,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class BatchProcessDriverCLI {
-
     /**
      * This relies on an special exit values of 254 (do not restart),
      * 0 ended correctly, 253 ended with exception (do restart)
@@ -56,10 +55,8 @@ public class BatchProcessDriverCLI {
     //how many times to wait pulseMillis milliseconds if a restart
     //message has been received through stdout, but the
     //child process has not yet exited
-    private int waitNumLoopsAfterRestartmessage = 60;
-    int loopsAfterRestartMessageReceived = 0;
-
-
+    private int waitNumLoopsAfterRestartMessage = 60;
+    private int loopsAfterRestartMessageReceived = 0;
 
     private volatile boolean userInterrupted = false;
     private boolean receivedRestartMsg = false;
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
index e234fdd..3aa77e8 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
@@ -128,7 +128,6 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
         return new FileConsumerFutureResult(currentFile, numResourcesConsumed);
     }
 
-
     /**
      * Main piece of code that needs to be implemented.  Clients
      * are responsible for closing streams and handling the exceptions
@@ -419,5 +418,4 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             close(is);
         }
     }
-
 }
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
index 84a0f91..1f4bcd8 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
@@ -145,8 +145,7 @@ public class FSBatchProcessCLI {
     }
 
     public static void main(String[] args) throws Exception {
-
-        try{
+        try {
             FSBatchProcessCLI cli = new FSBatchProcessCLI(args);
             cli.execute(args);
         } catch (Throwable t) {
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
index 5a334b1..f95bcbb 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
@@ -108,7 +108,7 @@ public class RecursiveParserWrapperFSConsumer extends AbstractFSConsumer {
             thrown = t;
             metadataList = parser.getMetadata();
             if (metadataList == null) {
-                metadataList = new LinkedList<Metadata>();
+                metadataList = new LinkedList<>();
             }
             Metadata m = null;
             if (metadataList.size() == 0) {
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
index c23b269..8523d5c 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
@@ -125,7 +125,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
             long pulse = 100;
             for (int i = 0; i < totalTime; i += pulse) {
                 try {
-                    Thread.currentThread().sleep(pulse);
+                    Thread.sleep(pulse);
                 } catch (InterruptedException e) {
                     //swallow
                 }
@@ -221,12 +221,12 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
         Path outputDir = Paths.get(args[1]);
         int totalThreads = Integer.parseInt(args[2]);
 
-        List<String> commandLine = new ArrayList<String>();
+        List<String> commandLine = new ArrayList<>();
         commandLine.addAll(Arrays.asList(args).subList(3, args.length));
         totalThreads = (totalThreads < 1) ? 1 : totalThreads;
         ExecutorService ex = Executors.newFixedThreadPool(totalThreads);
         ExecutorCompletionService<Integer> completionService =
-                new ExecutorCompletionService<Integer>(ex);
+                new ExecutorCompletionService<>(ex);
 
         for (int i = 0; i < totalThreads; i++) {
             StrawManTikaAppDriver driver =
diff --git a/tika-bundle/pom.xml b/tika-bundle/pom.xml
index 28ddc1a..b9cfc88 100644
--- a/tika-bundle/pom.xml
+++ b/tika-bundle/pom.xml
@@ -266,7 +266,8 @@
               org.xml.sax.helpers;resolution:=optional,
               org.xmlpull.v1;resolution:=optional,
               com.microsoft.schemas.office.powerpoint;resolution:=optional,
-              com.microsoft.schemas.office.word;resolution:=optional,              sun.misc;resolution:=optional,
+              com.microsoft.schemas.office.word;resolution:=optional,
+              sun.misc;resolution:=optional,
               ucar.units;resolution:=optional,
               ucar.httpservices;resolution:=optional,
               ucar.nc2.util;resolution:=optional,
@@ -443,4 +444,4 @@
     <system>Jenkins</system>
     <url>https://builds.apache.org/job/Tika-trunk/</url>
   </ciManagement>
-</project>  
\ No newline at end of file
+</project>
diff --git a/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java b/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
index c610e9a..77e60c3 100644
--- a/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
+++ b/tika-bundle/src/test/java/org/apache/tika/bundle/BundleIT.java
@@ -72,8 +72,10 @@ public class BundleIT {
 
     @Inject
     private Parser defaultParser;
+
     @Inject
     private Detector contentTypeDetector;
+
     @Inject
     private BundleContext bc;
 
@@ -86,7 +88,6 @@ public class BundleIT {
                 bundle(new File(base, "tika-bundle.jar").toURI().toURL().toString()));
     }
 
-
     @Test
     public void testBundleLoaded() throws Exception {
         boolean hasCore = false, hasBundle = false;
@@ -104,7 +105,6 @@ public class BundleIT {
         assertTrue("Bundle bundle not found", hasBundle);
     }
 
-
     @Test
     public void testManifestNoJUnit() throws Exception {
         File TARGET = new File("target");
@@ -123,12 +123,11 @@ public class BundleIT {
         assertFalse("The bundle should not import junit", containsJunit);
     }
 
-
     @Test
     public void testBundleDetection() throws Exception {
         Metadata metadataTXT = new Metadata();
         metadataTXT.set(Metadata.RESOURCE_NAME_KEY, "test.txt");
-        
+
         Metadata metadataPDF = new Metadata();
         metadataPDF.set(Metadata.RESOURCE_NAME_KEY, "test.pdf");
 
@@ -137,7 +136,6 @@ public class BundleIT {
         assertEquals(MediaType.application("pdf"), contentTypeDetector.detect(null, metadataPDF));
     }
 
-
     @Test
     public void testForkParser() throws Exception {
         ForkParser parser = new ForkParser(Activator.class.getClassLoader(), defaultParser);
@@ -157,7 +155,6 @@ public class BundleIT {
         assertEquals("test content", content.trim());
     }
 
-
     @Test
     public void testBundleSimpleText() throws Exception {
         Tika tika = new Tika();
@@ -167,7 +164,6 @@ public class BundleIT {
         assertTrue(xml.contains("tika-bundle"));
     }
 
-
     @Test
     public void testBundleDetectors() throws Exception {
         //For some reason, the detector created by OSGi has a flat
@@ -178,9 +174,9 @@ public class BundleIT {
 
         // Get the classes found within OSGi
         ServiceReference<Detector> detectorRef = bc.getServiceReference(Detector.class);
-        DefaultDetector detectorService = (DefaultDetector)bc.getService(detectorRef);
-        
-        Set<String> osgiDetectors = new HashSet<String>();
+        DefaultDetector detectorService = (DefaultDetector) bc.getService(detectorRef);
+
+        Set<String> osgiDetectors = new HashSet<>();
         for (Detector d : detectorService.getDetectors()) {
             osgiDetectors.add(d.getClass().getName());
         }
@@ -194,7 +190,7 @@ public class BundleIT {
         Set<String> rawDetectors = new HashSet<String>();
         for (Detector d : detector.getDetectors()) {
             if (d instanceof DefaultDetector) {
-                for (Detector dChild : ((DefaultDetector)d).getDetectors()) {
+                for (Detector dChild : ((DefaultDetector) d).getDetectors()) {
                     rawDetectors.add(dChild.getClass().getName());
                 }
             } else {
@@ -204,14 +200,13 @@ public class BundleIT {
         assertEquals(osgiDetectors, rawDetectors);
     }
 
-
     @Test
     public void testBundleParsers() throws Exception {
         // Get the classes found within OSGi
         ServiceReference<Parser> parserRef = bc.getServiceReference(Parser.class);
-        DefaultParser parserService = (DefaultParser)bc.getService(parserRef);
-        
-        Set<String> osgiParsers = new HashSet<String>();
+        DefaultParser parserService = (DefaultParser) bc.getService(parserRef);
+
+        Set<String> osgiParsers = new HashSet<>();
         for (Parser p : parserService.getAllComponentParsers()) {
             osgiParsers.add(p.getClass().getName());
         }
@@ -221,11 +216,11 @@ public class BundleIT {
                 osgiParsers.size() > 15);
 
         // Get the raw parsers list from the traditional service loading mechanism
-        CompositeParser parser = (CompositeParser)defaultParser;
-        Set<String> rawParsers = new HashSet<String>();
+        CompositeParser parser = (CompositeParser) defaultParser;
+        Set<String> rawParsers = new HashSet<>();
         for (Parser p : parser.getAllComponentParsers()) {
             if (p instanceof DefaultParser) {
-                for (Parser pChild : ((DefaultParser)p).getAllComponentParsers()) {
+                for (Parser pChild : ((DefaultParser) p).getAllComponentParsers()) {
                     rawParsers.add(pChild.getClass().getName());
                 }
             } else {
@@ -234,19 +229,17 @@ public class BundleIT {
         }
         assertEquals(rawParsers, osgiParsers);
     }
-    
+
     @Test
     public void testTesseractParser() throws Exception {
         ContentHandler handler = new BodyContentHandler();
         ParseContext context = new ParseContext();
         Parser tesseractParser = new TesseractOCRParser();
-        try(InputStream stream = new FileInputStream("src/test/resources/testOCR.jpg"))
-        {
+        try (InputStream stream = new FileInputStream("src/test/resources/testOCR.jpg")) {
             tesseractParser.parse(stream, handler, new Metadata(), context);
         }
-        
-    }
 
+    }
 
     @Test
     public void testTikaBundle() throws Exception {
@@ -260,7 +253,7 @@ public class BundleIT {
         context.set(Parser.class, parser);
 
         try (InputStream stream =
-                new FileInputStream("src/test/resources/test-documents.zip")) {
+                     new FileInputStream("src/test/resources/test-documents.zip")) {
             parser.parse(stream, handler, new Metadata(), context);
         }
 
diff --git a/tika-bundle/test-bundles.xml b/tika-bundle/test-bundles.xml
index 8c010e3..0e60103 100644
--- a/tika-bundle/test-bundles.xml
+++ b/tika-bundle/test-bundles.xml
@@ -32,4 +32,4 @@
       </includes>
     </dependencySet>
   </dependencySets>
-</assembly>
\ No newline at end of file
+</assembly>
diff --git a/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java b/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java
index f59b56e..dd1d033 100644
--- a/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java
+++ b/tika-core/src/main/java/org/apache/tika/fork/ForkClient.java
@@ -37,7 +37,7 @@ import org.xml.sax.ContentHandler;
 
 class ForkClient {
 
-    private final List<ForkResource> resources = new ArrayList<ForkResource>();
+    private final List<ForkResource> resources = new ArrayList<>();
 
     private final ClassLoader loader;
 
@@ -59,7 +59,7 @@ class ForkClient {
             this.jar = createBootstrapJar();
 
             ProcessBuilder builder = new ProcessBuilder();
-            List<String> command = new ArrayList<String>();
+            List<String> command = new ArrayList<>();
             command.addAll(java);
             command.add("-jar");
             command.add(jar.getPath());
@@ -117,7 +117,7 @@ class ForkClient {
 
     public synchronized Throwable call(String method, Object... args)
             throws IOException, TikaException {
-        List<ForkResource> r = new ArrayList<ForkResource>(resources);
+        List<ForkResource> r = new ArrayList<>(resources);
         output.writeByte(ForkServer.CALL);
         output.writeUTF(method);
         for (int i = 0; i < args.length; i++) {
@@ -265,10 +265,8 @@ class ForkClient {
      * @throws IOException if the bootstrap archive could not be created
      */
     private static void fillBootstrapJar(File file) throws IOException {
-        try (JarOutputStream jar =
-                new JarOutputStream(new FileOutputStream(file))) {
-            String manifest =
-                    "Main-Class: " + ForkServer.class.getName() + "\n";
+        try (JarOutputStream jar = new JarOutputStream(new FileOutputStream(file))) {
+            String manifest = "Main-Class: " + ForkServer.class.getName() + "\n";
             jar.putNextEntry(new ZipEntry("META-INF/MANIFEST.MF"));
             jar.write(manifest.getBytes(UTF_8));
 
@@ -290,5 +288,4 @@ class ForkClient {
             }
         }
     }
-
 }
diff --git a/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java b/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java
index c4fcd39..c69b11c 100644
--- a/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java
+++ b/tika-core/src/main/java/org/apache/tika/fork/ForkParser.java
@@ -54,8 +54,7 @@ public class ForkParser extends AbstractParser {
 
     private int currentlyInUse = 0;
 
-    private final Queue<ForkClient> pool =
-        new LinkedList<ForkClient>();
+    private final Queue<ForkClient> pool = new LinkedList<>();
 
     private long serverPulseMillis = 5000;
 
@@ -134,7 +133,7 @@ public class ForkParser extends AbstractParser {
      * @param java java command line
      */
     public void setJavaCommand(List<String> java) {
-        this.java = new ArrayList<String>(java);
+        this.java = new ArrayList<>(java);
     }
 
     /**
diff --git a/tika-eval/pom.xml b/tika-eval/pom.xml
index 8bc7680..d4b1726 100644
--- a/tika-eval/pom.xml
+++ b/tika-eval/pom.xml
@@ -19,18 +19,8 @@
   under the License.
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <properties>
-        <cli.version>1.3.1</cli.version> <!--sync version with tika-server or move to parent? -->
-        <!-- upgrade to 6.x or something more modern once Tika requires Java 1.8 -->
-        <lucene.version>5.5.3</lucene.version>
-        <poi.version>3.16-beta2</poi.version>
-
-    </properties>
 
     <parent>
         <groupId>org.apache.tika</groupId>
@@ -43,6 +33,13 @@
     <name>Apache Tika eval</name>
     <url>http://tika.apache.org/</url>
 
+    <properties>
+        <cli.version>1.3.1</cli.version> <!--sync version with tika-server or move to parent? -->
+        <!-- upgrade to 6.x or something more modern once Tika requires Java 1.8 -->
+        <lucene.version>5.5.3</lucene.version>
+        <poi.version>3.16-beta2</poi.version>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
@@ -59,6 +56,7 @@
             <artifactId>tika-serialization</artifactId>
             <version>${project.version}</version>
         </dependency>
+
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-math3</artifactId>
@@ -136,6 +134,7 @@
             <artifactId>poi-scratchpad</artifactId>
             <version>${poi.version}</version>
         </dependency>
+
         <dependency>
             <groupId>org.apache.tika</groupId>
             <artifactId>tika-batch</artifactId>
@@ -150,14 +149,14 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-
-
     </dependencies>
+
     <build>
         <plugins>
             <plugin>
@@ -255,11 +254,8 @@
                     </executions>
                 </plugin>
             </plugins>
-
     </build>
 
-
-
     <organization>
         <name>The Apache Software Foundation</name>
         <url>http://www.apache.org</url>
@@ -277,6 +273,4 @@
         <system>Jenkins</system>
         <url>https://builds.apache.org/job/Tika-trunk/</url>
     </ciManagement>
-
-
 </project>
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
index c115956..e1284c6 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
@@ -58,7 +58,7 @@ public class HtmlParser extends AbstractEncodingDetectorParser {
     private static final MediaType X_ASP = MediaType.application("x-asp");
 
     private static final Set<MediaType> SUPPORTED_TYPES =
-            Collections.unmodifiableSet(new HashSet<MediaType>(Arrays.asList(
+            Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
                     MediaType.text("html"),
                     XHTML,
                     WAP_XHTML,
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
index 97fdc33..ddb4f92 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
@@ -59,7 +59,7 @@ public class ImageParser extends AbstractParser {
     private static final Set<MediaType> TMP_SUPPORTED;
 
     static {
-        TMP_SUPPORTED = new HashSet<MediaType>(Arrays.asList(
+        TMP_SUPPORTED = new HashSet<>(Arrays.asList(
                 MAIN_BMP_TYPE,
                 OLD_BMP_TYPE,
                 MediaType.image("gif"),
@@ -217,5 +217,4 @@ public class ImageParser extends AbstractParser {
         xhtml.startDocument();
         xhtml.endDocument();
     }
-
 }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
index 5f9134f..9728b38 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
@@ -95,12 +95,12 @@ public class TesseractOCRParser extends AbstractParser {
     private static final long serialVersionUID = -8167538283213097265L;
     private static final TesseractOCRConfig DEFAULT_CONFIG = new TesseractOCRConfig();
     private static final Set<MediaType> SUPPORTED_TYPES = Collections.unmodifiableSet(
-            new HashSet<MediaType>(Arrays.asList(new MediaType[] {
+            new HashSet<>(Arrays.asList(new MediaType[]{
                     MediaType.image("png"), MediaType.image("jpeg"), MediaType.image("tiff"),
                     MediaType.image("bmp"), MediaType.image("gif"), MediaType.image("jp2"),
                     MediaType.image("jpx"), MediaType.image("x-portable-pixmap")
             })));
-    private static Map<String,Boolean> TESSERACT_PRESENT = new HashMap<String, Boolean>();
+    private static Map<String,Boolean> TESSERACT_PRESENT = new HashMap<>();
 
 
 
@@ -182,7 +182,6 @@ public class TesseractOCRParser extends AbstractParser {
     
     public void parse(Image image, ContentHandler handler, Metadata metadata, ParseContext context) throws IOException,
             SAXException, TikaException {
-
         TemporaryResources tmp = new TemporaryResources();
         FileOutputStream fos = null;
         TikaInputStream tis = null;
@@ -195,7 +194,6 @@ public class TesseractOCRParser extends AbstractParser {
             ImageIO.write(bImage, "png", fos);
             tis = TikaInputStream.get(file);
             parse(tis, handler, metadata, context);
-
         } finally {
             tmp.dispose();
             if (tis != null)
@@ -203,13 +201,11 @@ public class TesseractOCRParser extends AbstractParser {
             if (fos != null)
                 fos.close();
         }
-
     }
 
     @Override
     public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext parseContext)
             throws IOException, SAXException, TikaException {
-
         TesseractOCRConfig config = parseContext.get(TesseractOCRConfig.class, DEFAULT_CONFIG);
         // If Tesseract is not on the path with the current config, do not try to run OCR
         // getSupportedTypes shouldn't have listed us as handling it, so this should only
@@ -290,7 +286,6 @@ public class TesseractOCRParser extends AbstractParser {
         } finally {
             tmp.dispose();
         }
-
     }
 
     /**
@@ -420,7 +415,6 @@ public class TesseractOCRParser extends AbstractParser {
      *           if an input error occurred
      */
     private void doOCR(File input, File output, TesseractOCRConfig config) throws IOException, TikaException {
-
         String[] cmd = { config.getTesseractPath() + getTesseractProg(), input.getPath(), output.getPath(), "-l",
                 config.getLanguage(), "-psm", config.getPageSegMode(),
                 config.getOutputType().name().toLowerCase(Locale.US),
@@ -437,7 +431,7 @@ public class TesseractOCRParser extends AbstractParser {
         logStream("OCR MSG", out, input);
         logStream("OCR ERROR", err, input);
 
-        FutureTask<Integer> waitTask = new FutureTask<Integer>(new Callable<Integer>() {
+        FutureTask<Integer> waitTask = new FutureTask<>(new Callable<Integer>() {
             public Integer call() throws Exception {
                 return process.waitFor();
             }
@@ -448,22 +442,18 @@ public class TesseractOCRParser extends AbstractParser {
 
         try {
             waitTask.get(config.getTimeout(), TimeUnit.SECONDS);
-
         } catch (InterruptedException e) {
             waitThread.interrupt();
             process.destroy();
             Thread.currentThread().interrupt();
             throw new TikaException("TesseractOCRParser interrupted", e);
-
         } catch (ExecutionException e) {
             // should not be thrown
-
         } catch (TimeoutException e) {
             waitThread.interrupt();
             process.destroy();
             throw new TikaException("TesseractOCRParser timeout", e);
         }
-
     }
 
     /**
@@ -480,7 +470,6 @@ public class TesseractOCRParser extends AbstractParser {
      *           if an input error occurred
      */
     private void extractOutput(InputStream stream, XHTMLContentHandler xhtml) throws SAXException, IOException {
-
         xhtml.startElement("div", "class", "ocr");
         try (Reader reader = new InputStreamReader(stream, UTF_8)) {
             char[] buffer = new char[1024];
@@ -581,7 +570,7 @@ public class TesseractOCRParser extends AbstractParser {
 
         private static Set<String> unmodifiableSet(String... elements) {
             return Collections.unmodifiableSet(
-                    new HashSet<String>(Arrays.asList(elements)));
+                    new HashSet<>(Arrays.asList(elements)));
         }
     }
 }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
index 29be16b..2eb996b 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
@@ -74,7 +74,7 @@ public class PooledTimeSeriesParser extends AbstractParser {
             isAvailable ? Collections.unmodifiableSet(
                     new HashSet<>(Arrays.asList(new MediaType[]{
                             MediaType.video("avi"), MediaType.video("mp4")
-                    }))) : Collections.EMPTY_SET;
+                    }))) : Collections.<MediaType>emptySet();
     ;
     // TODO: Add all supported video types
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
index aaf16fc..e890a34 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
@@ -45,7 +45,7 @@ class QPWTextExtractor {
 
     private static final String OLE_DOCUMENT_NAME = "NativeContent_MAIN";
 
-    private enum Extractor{
+    private enum Extractor {
         IGNORE { @Override public void extract(Context ctx) throws IOException {
             ctx.in.skipWPByte(ctx.bodyLength);
         }},
@@ -62,7 +62,7 @@ class QPWTextExtractor {
             ctx.metadata.set(TikaCoreProperties.CREATOR, getQstrLabel(ctx.in));
             ctx.metadata.set(TikaCoreProperties.MODIFIER, getQstrLabel(ctx.in));
         }},
-        EXT_LINK { @Override public void extract(Context ctx) 
+        EXT_LINK { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             ctx.in.readWPShort(); // index
             ctx.in.readWPShort(); // page first
@@ -70,7 +70,7 @@ class QPWTextExtractor {
             ctx.xhtml.characters(getQstrLabel(ctx.in));
             ctx.xhtml.characters(System.lineSeparator());
         }},
-        STRING_TABLE { @Override public void extract(Context ctx) 
+        STRING_TABLE { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             long entries = ctx.in.readWPLong();
             ctx.in.readWPLong();  // Total used
@@ -92,26 +92,26 @@ class QPWTextExtractor {
             ctx.xhtml.characters(getQstrLabel(ctx.in));
             ctx.xhtml.characters(System.lineSeparator());
         }},
-        SHEET_HEADFOOT { @Override public void extract(Context ctx) 
+        SHEET_HEADFOOT { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             ctx.in.readWPShort(); // flag
             ctx.xhtml.characters(getQstrLabel(ctx.in));
             ctx.xhtml.characters(System.lineSeparator());
         }},
-        FORMULA_STRING_VALUE { @Override public void extract(Context ctx) 
+        FORMULA_STRING_VALUE { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             ctx.in.readWPShort(); // column
             ctx.in.readWPLong();  // row
             ctx.xhtml.characters(getQstrLabel(ctx.in));
         }},
-        CGENERICLABEL { @Override public void extract(Context ctx) 
+        CGENERICLABEL { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             ctx.in.readWPShort(); // column
             ctx.in.readWPLong();  // row
             ctx.in.readWPShort(); // format index
             ctx.xhtml.characters(getQstrLabel(ctx.in));
         }},
-        CCOMMENT { @Override public void extract(Context ctx) 
+        CCOMMENT { @Override public void extract(Context ctx)
                 throws IOException, SAXException {
             ctx.in.readWPShort(); // column
             ctx.in.readWPLong();  // row
@@ -123,13 +123,13 @@ class QPWTextExtractor {
         DEBUG { @Override public void extract(Context ctx) throws IOException {
             LOG.error("REC ({}/{}):{}", Integer.toHexString(ctx.type), ctx.bodyLength, ctx.in.readWPString(ctx.bodyLength));
         }};
-        public abstract void extract(Context ctx) 
+        public abstract void extract(Context ctx)
                 throws IOException, SAXException;
     }
-    
+
     // Holds extractors for each record types we are interested in.
     // All record types not defined here will be skipped.
-    private static final Map<Integer, Extractor> EXTRACTORS = 
+    private static final Map<Integer, Extractor> EXTRACTORS =
             new HashMap<>();
     static {
         //--- Global Records ---
@@ -146,18 +146,18 @@ class QPWTextExtractor {
         EXTRACTORS.put(0x0606, Extractor.SHEET_HEADFOOT); // Sheet footer
 
         //--- Cells ---
-        EXTRACTORS.put(0x0c02, Extractor.FORMULA_STRING_VALUE); 
-        EXTRACTORS.put(0x0c72, Extractor.CGENERICLABEL); 
-        EXTRACTORS.put(0x0c80, Extractor.CCOMMENT); 
+        EXTRACTORS.put(0x0c02, Extractor.FORMULA_STRING_VALUE);
+        EXTRACTORS.put(0x0c72, Extractor.CGENERICLABEL);
+        EXTRACTORS.put(0x0c80, Extractor.CCOMMENT);
     }
-    
+
     class Context {
         private final WPInputStream in;
         private final XHTMLContentHandler xhtml;
         private final Metadata metadata;
         private int type;
         private int bodyLength;
-        public Context(WPInputStream in, XHTMLContentHandler xhtml, 
+        public Context(WPInputStream in, XHTMLContentHandler xhtml,
                 Metadata metadata) {
             super();
             this.in = in;
@@ -165,20 +165,20 @@ class QPWTextExtractor {
             this.metadata = metadata;
         }
     }
-    
+
     @SuppressWarnings("resource")
     public void extract(
             InputStream input, XHTMLContentHandler xhtml, Metadata metadata)
                     throws IOException, SAXException, TikaException {
-        
+
         POIFSFileSystem pfs = new POIFSFileSystem(input);
         DirectoryNode rootNode = pfs.getRoot();
         if (rootNode == null || !rootNode.hasEntry(OLE_DOCUMENT_NAME)) {
             throw new UnsupportedFormatException("Unsupported QuattroPro file format. "
                     + "Looking for OLE entry \"" + OLE_DOCUMENT_NAME
-                    + "\". Found: "+ rootNode.getEntryNames());
+                    + "\". Found: " + (rootNode == null ? "null" : rootNode.getEntryNames()));
         }
-        
+
         //TODO shall we validate and throw warning/error if the file does not 
         //start with a BOF and ends with a EOF?
         xhtml.startElement("p");
@@ -200,7 +200,7 @@ class QPWTextExtractor {
         }
         xhtml.endElement("p");
     }
-    
+
     private boolean hasNext(InputStream in) throws IOException {
         try {
             in.mark(1);
@@ -209,7 +209,7 @@ class QPWTextExtractor {
             in.reset();
         }
     }
-    
+
     private static String getQstrLabel(WPInputStream in) throws IOException {
         // QSTR
         int count = in.readWPShort();
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
index 1dc4711..4b0101e 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
@@ -35,15 +35,13 @@ public class NLTKNERecogniserTest {
     public void testGetEntityTypes() throws Exception {
         String text = "America is a big country.";
         System.setProperty(NamedEntityParser.SYS_PROP_NER_IMPL, NLTKNERecogniser.class.getName());
+
         Tika tika = new Tika(new TikaConfig(NamedEntityParser.class.getResourceAsStream("tika-config.xml")));
         Metadata md = new Metadata();
         tika.parse(new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)), md);
 
         Set<String> names = new HashSet<>(Arrays.asList(md.getValues("NER_NAMES")));
-        if(names.size() == 0) {
-            return;
-        }
-        else {
+        if(names.size() != 0) {
             assertTrue(names.contains("America"));
             assertTrue(names.size() == 1); 
         }
diff --git a/tika-serialization/pom.xml b/tika-serialization/pom.xml
index e07cf5d..b602215 100644
--- a/tika-serialization/pom.xml
+++ b/tika-serialization/pom.xml
@@ -21,6 +21,7 @@
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
+
   <parent>
     <groupId>org.apache.tika</groupId>
     <artifactId>tika-parent</artifactId>
@@ -78,7 +79,6 @@
     </plugins>
   </build>
 
-
   <organization>
     <name>The Apache Software Foundation</name>
     <url>http://www.apache.org</url>
@@ -91,5 +91,4 @@
     <system>Jenkins</system>
     <url>https://builds.apache.org/job/Tika-trunk/</url>
   </ciManagement>
-
 </project>
diff --git a/tika-server/pom.xml b/tika-server/pom.xml
index f230bfd..21563df 100644
--- a/tika-server/pom.xml
+++ b/tika-server/pom.xml
@@ -146,6 +146,7 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
+
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git a/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java b/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
index 5397d04..b5d94d9 100644
--- a/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
+++ b/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
@@ -190,7 +190,7 @@ public class TikaServerCli {
             TikaResource.init(tika, digester, inputStreamFactory);
             JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
 
-            List<ResourceProvider> rCoreProviders = new ArrayList<ResourceProvider>();
+            List<ResourceProvider> rCoreProviders = new ArrayList<>();
             rCoreProviders.add(new SingletonResourceProvider(new MetadataResource()));
             rCoreProviders.add(new SingletonResourceProvider(new RecursiveMetadataResource()));
             rCoreProviders.add(new SingletonResourceProvider(new DetectorResource()));
@@ -202,11 +202,11 @@ public class TikaServerCli {
             rCoreProviders.add(new SingletonResourceProvider(new TikaDetectors()));
             rCoreProviders.add(new SingletonResourceProvider(new TikaParsers()));
             rCoreProviders.add(new SingletonResourceProvider(new TikaVersion()));
-            List<ResourceProvider> rAllProviders = new ArrayList<ResourceProvider>(rCoreProviders);
+            List<ResourceProvider> rAllProviders = new ArrayList<>(rCoreProviders);
             rAllProviders.add(new SingletonResourceProvider(new TikaWelcome(rCoreProviders)));
             sf.setResourceProviders(rAllProviders);
 
-            List<Object> providers = new ArrayList<Object>();
+            List<Object> providers = new ArrayList<>();
             providers.add(new TarWriter());
             providers.add(new ZipWriter());
             providers.add(new CSVMessageBodyWriter());
@@ -229,8 +229,7 @@ public class TikaServerCli {
             BindingFactoryManager manager = sf.getBus().getExtension(BindingFactoryManager.class);
             JAXRSBindingFactory factory = new JAXRSBindingFactory();
             factory.setBus(sf.getBus());
-            manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID,
-                    factory);
+            manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, factory);
             sf.create();
             LOG.info("Started Apache Tika server at {}", url);
         } catch (Exception ex) {
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
index 24e3f91..739794c 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
@@ -76,7 +76,7 @@ public class RecursiveMetadataResource {
     @POST
     @Consumes("multipart/form-data")
     @Produces({"application/json"})
-    @Path("form{"+HANDLER_TYPE_PARAM+" : (\\w+)?}")
+    @Path("form{" + HANDLER_TYPE_PARAM + " : (\\w+)?}")
     public Response getMetadataFromMultipart(Attachment att, @Context UriInfo info,
                                              @PathParam(HANDLER_TYPE_PARAM) String handlerTypeName)
             throws Exception {
@@ -110,7 +110,7 @@ public class RecursiveMetadataResource {
 
     @PUT
     @Produces("application/json")
-    @Path("{"+HANDLER_TYPE_PARAM+" : (\\w+)?}")
+    @Path("{" + HANDLER_TYPE_PARAM + " : (\\w+)?}")
     public Response getMetadata(InputStream is,
                                 @Context HttpHeaders httpHeaders,
                                 @Context UriInfo info,
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
index 98287a1..288d11d 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
@@ -82,7 +82,7 @@ import org.xml.sax.SAXException;
 
 @Path("/tika")
 public class TikaResource {
-    public static final String GREETING = "This is Tika Server ("+new Tika().toString()+"). Please PUT\n";
+    public static final String GREETING = "This is Tika Server (" + new Tika().toString() + "). Please PUT\n";
     public static final String X_TIKA_OCR_HEADER_PREFIX = "X-Tika-OCR";
     public static final String X_TIKA_PDF_HEADER_PREFIX = "X-Tika-PDF";
 
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
index 8dad762..0aba6f9 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
@@ -108,5 +108,4 @@ public class TranslateResource {
 		}
 		return null;
 	}
-
 }
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
index 2292bef..716d171 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
@@ -77,7 +77,7 @@ public class UnpackerResource {
 
         for (String name : metadata.names()) {
             String[] values = metadata.getValues(name);
-            ArrayList<String> list = new ArrayList<String>(values.length + 1);
+            ArrayList<String> list = new ArrayList<>(values.length + 1);
             list.add(name);
             list.addAll(Arrays.asList(values));
             writer.writeNext(list.toArray(values));
@@ -135,7 +135,7 @@ public class UnpackerResource {
             ch = new DefaultHandler();
         }
 
-        Map<String, byte[]> files = new HashMap<String, byte[]>();
+        Map<String, byte[]> files = new HashMap<>();
         MutableInt count = new MutableInt();
 
         pc.set(EmbeddedDocumentExtractor.class, new MyEmbeddedDocumentExtractor(count, files));

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 01/07: Added logging deps to unify it in parsers

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 7aac9354b2ff0f76eaf84917ef0fd45f2b737745
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Thu Jan 19 20:28:57 2017 +0300

    Added logging deps to unify it in parsers
---
 tika-parent/pom.xml  |  5 +++++
 tika-parsers/pom.xml | 14 ++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index b9a5e66..fa79cac 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -297,6 +297,11 @@
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>log4j-over-slf4j</artifactId>
+        <version>${slf4j.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
diff --git a/tika-parsers/pom.xml b/tika-parsers/pom.xml
index d923f43..3cd3221 100644
--- a/tika-parsers/pom.xml
+++ b/tika-parsers/pom.xml
@@ -309,6 +309,20 @@
       <version>2.2.4</version>
     </dependency>    
 
+    <!-- logging dependencies -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+
     <!-- Test dependencies -->
     <dependency>
       <groupId>junit</groupId>

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 05/07: Added explicit test scope for junit

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 03ab44310d6363b1d4e6a982b564c1dd72b56589
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Tue Mar 21 20:37:19 2017 +0300

    Added explicit test scope for junit
---
 tika-app/pom.xml    | 1 +
 tika-bundle/pom.xml | 1 +
 tika-core/pom.xml   | 1 +
 tika-java7/pom.xml  | 1 +
 tika-server/pom.xml | 1 +
 5 files changed, 5 insertions(+)

diff --git a/tika-app/pom.xml b/tika-app/pom.xml
index c7f7b4e..75b1d17 100644
--- a/tika-app/pom.xml
+++ b/tika-app/pom.xml
@@ -81,6 +81,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <artifactId>commons-io</artifactId>
diff --git a/tika-bundle/pom.xml b/tika-bundle/pom.xml
index b9cfc88..d785c89 100644
--- a/tika-bundle/pom.xml
+++ b/tika-bundle/pom.xml
@@ -61,6 +61,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.ops4j.pax.exam</groupId>
diff --git a/tika-core/pom.xml b/tika-core/pom.xml
index 1d83962..90f3791 100644
--- a/tika-core/pom.xml
+++ b/tika-core/pom.xml
@@ -60,6 +60,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 
diff --git a/tika-java7/pom.xml b/tika-java7/pom.xml
index 4ae0767..432c5ee 100644
--- a/tika-java7/pom.xml
+++ b/tika-java7/pom.xml
@@ -92,6 +92,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 
diff --git a/tika-server/pom.xml b/tika-server/pom.xml
index 21563df..23dbc68 100644
--- a/tika-server/pom.xml
+++ b/tika-server/pom.xml
@@ -150,6 +150,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 02/07: Reformat POMs a little

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 23cf330499a816af90b5f4d6e384947cdfacc930
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Thu Jan 19 20:29:48 2017 +0300

    Reformat POMs a little
---
 tika-parent/pom.xml  |  1 -
 tika-parsers/pom.xml | 18 +++++++++---------
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index fa79cac..3e81f46 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -444,5 +444,4 @@
     <url>https://github.com/apache/tika</url>
     <tag>HEAD</tag>
   </scm>
-
 </project>
diff --git a/tika-parsers/pom.xml b/tika-parsers/pom.xml
index 3cd3221..3a86c0c 100644
--- a/tika-parsers/pom.xml
+++ b/tika-parsers/pom.xml
@@ -252,19 +252,19 @@
       <artifactId>junrar</artifactId>
       <version>0.7</version>
     </dependency>
-	<dependency>
+    <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-client</artifactId>
       <version>${cxf.version}</version>
     </dependency>
     <!-- TIKA-2021: Tesseract OCR Parser dependencies, 
     used for executing image processing script -->
-	<dependency>
-	    <groupId>org.apache.commons</groupId>
-	    <artifactId>commons-exec</artifactId>
-	    <version>${commonsexec.version}</version>
-	    <scope>compile</scope>
-	</dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-exec</artifactId>
+      <version>${commonsexec.version}</version>
+      <scope>compile</scope>
+    </dependency>
 
     <!-- Provided dependencies -->
     <dependency>
@@ -303,7 +303,7 @@
       <artifactId>json</artifactId>
       <version>20140107</version>
     </dependency>
-	<dependency>
+    <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <version>2.2.4</version>
@@ -354,6 +354,7 @@
       <version>1.3.0</version>
       <scope>test</scope>
     </dependency>
+
     <!-- edu.ucar dependencies -->
     <dependency>
       <groupId>edu.ucar</groupId>
@@ -434,7 +435,6 @@
         <version>1.6.5</version>
         <scope>test</scope>
     </dependency>
-
   </dependencies>
 
   <build>

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 07/07: Bumped pax-exam version to 4.10.0

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 02a65e00575382dcf42a94275b54814ae7712648
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Tue Mar 21 20:18:21 2017 +0300

    Bumped pax-exam version to 4.10.0
---
 tika-bundle/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tika-bundle/pom.xml b/tika-bundle/pom.xml
index 2a0a18e..b1e0dd3 100644
--- a/tika-bundle/pom.xml
+++ b/tika-bundle/pom.xml
@@ -41,7 +41,7 @@
   <url>http://tika.apache.org/</url>
 
   <properties>
-    <pax.exam.version>4.4.0</pax.exam.version>
+    <pax.exam.version>4.10.0</pax.exam.version>
   </properties>
 
   <dependencies>

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 03/07: TIKA-2245 Logging unification

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grossws pushed a commit to branch logging-refactored
in repository https://gitbox.apache.org/repos/asf/tika.git

commit c2c2fecc5c5ebcdcf5b3fec8c61e4608f0875991
Author: Konstantin Gribov <gr...@gmail.com>
AuthorDate: Tue Mar 21 19:51:27 2017 +0300

    TIKA-2245 Logging unification
    
    Use `slf4j` as logging API in all libraries, excludes
    `commons-logging`, `commons-logging-api` and `log4j` from library deps.
    
    Use `slf4j-log4j12` for standalone parts (`tika-app`, `tika-batch`,
    `tika-server`) with bridges for JCL (`commons-logging`) and JUL
    (`java.util.logging`).
    
    All Tika classes now use static final `Logger` with name `LOG` for all
    logging activity (usually private but sometimes protected one).
    
    Fixes TIKA-2245
---
 tika-app/pom.xml                                   | 20 +-----
 .../src/main/java/org/apache/tika/cli/TikaCLI.java | 20 +++---
 tika-batch/pom.xml                                 | 20 ++++--
 .../java/org/apache/tika/batch/BatchProcess.java   | 67 ++++++++----------
 .../apache/tika/batch/BatchProcessDriverCLI.java   | 80 ++++++++++------------
 .../apache/tika/batch/FileResourceConsumer.java    | 29 ++++----
 .../org/apache/tika/batch/FileResourceCrawler.java | 24 +++----
 .../java/org/apache/tika/batch/Interrupter.java    |  4 +-
 .../java/org/apache/tika/batch/StatusReporter.java |  5 +-
 .../apache/tika/batch/fs/AbstractFSConsumer.java   |  6 +-
 .../apache/tika/batch/fs/BasicTikaFSConsumer.java  |  5 +-
 .../apache/tika/batch/fs/FSBatchProcessCLI.java    | 10 +--
 .../apache/tika/batch/fs/FSDirectoryCrawler.java   | 14 ++--
 .../org/apache/tika/batch/fs/FSListCrawler.java    |  4 +-
 .../batch/fs/RecursiveParserWrapperFSConsumer.java |  5 +-
 .../batch/fs/strawman/StrawManTikaAppDriver.java   | 33 ++++-----
 tika-bundle/pom.xml                                | 12 ++--
 .../src/test/resources/log4j.properties            | 20 ++----
 .../org/apache/tika/eval/AbstractProfiler.java     |  8 +--
 tika-example/pom.xml                               |  6 ++
 .../org/apache/tika/example/ImportContextImpl.java |  7 +-
 .../tika/example/LazyTextExtractorField.java       |  6 +-
 tika-parent/pom.xml                                |  7 +-
 tika-parsers/pom.xml                               | 71 +++++++++++++++++++
 .../apache/tika/parser/geo/topic/GeoParser.java    | 10 +--
 .../tika/parser/geo/topic/GeoParserConfig.java     | 10 +--
 .../geo/topic/gazetteer/GeoGazetteerClient.java    |  9 +--
 .../org/apache/tika/parser/html/HtmlParser.java    |  4 ++
 .../org/apache/tika/parser/image/ImageParser.java  | 10 ++-
 .../parser/microsoft/AbstractPOIFSExtractor.java   |  3 -
 .../apache/tika/parser/microsoft/ListManager.java  |  4 --
 .../tika/parser/microsoft/SummaryExtractor.java    |  8 +--
 .../apache/tika/parser/ner/NamedEntityParser.java  |  1 -
 .../tika/parser/ner/mitie/MITIENERecogniser.java   |  1 -
 .../apache/tika/parser/ocr/TesseractOCRParser.java |  8 ++-
 .../tika/parser/pot/PooledTimeSeriesParser.java    | 10 +--
 .../tika/parser/wordperfect/QPWTextExtractor.java  | 13 ++--
 .../tika/parser/wordperfect/WP5Charsets.java       | 12 ++--
 .../tika/parser/wordperfect/WP6Charsets.java       | 12 ++--
 .../tika/parser/xml/ElementMetadataHandler.java    | 30 +++-----
 .../tika/parser/ner/nltk/NLTKNERecogniserTest.java |  3 -
 tika-server/pom.xml                                | 20 ++++--
 .../org/apache/tika/server/TikaLoggingFilter.java  | 15 ++--
 .../java/org/apache/tika/server/TikaServerCli.java | 36 +++++-----
 .../tika/server/resource/DetectorResource.java     | 15 ++--
 .../tika/server/resource/LanguageResource.java     | 14 ++--
 .../tika/server/resource/MetadataResource.java     | 12 ++--
 .../server/resource/RecursiveMetadataResource.java | 10 +--
 .../apache/tika/server/resource/TikaResource.java  | 51 ++++----------
 .../tika/server/resource/TranslateResource.java    | 15 ++--
 .../tika/server/resource/UnpackerResource.java     | 15 ++--
 ...commons-logging.properties => log4j.properties} | 20 ++----
 52 files changed, 417 insertions(+), 437 deletions(-)

diff --git a/tika-app/pom.xml b/tika-app/pom.xml
index 16b65d2..c7f7b4e 100644
--- a/tika-app/pom.xml
+++ b/tika-app/pom.xml
@@ -42,16 +42,6 @@
       <groupId>${project.groupId}</groupId>
       <artifactId>tika-parsers</artifactId>
       <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging-api</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -74,22 +64,18 @@
       <version>${project.version}</version>
     </dependency>
 
+    <!-- logging -->
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
-      <artifactId>jul-to-slf4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
     </dependency>
     <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <version>1.2.17</version>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
     </dependency>
 
     <dependency>
diff --git a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
index b3630e5..707037b 100644
--- a/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
+++ b/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
@@ -61,11 +61,8 @@ import javax.xml.transform.stream.StreamResult;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.input.CloseShieldInputStream;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DocumentEntry;
@@ -108,6 +105,8 @@ import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.ContentHandlerFactory;
 import org.apache.tika.sax.ExpandedTitleContentHandler;
 import org.apache.tika.xmp.XMPMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
@@ -116,17 +115,16 @@ import org.xml.sax.helpers.DefaultHandler;
  * Simple command line interface for Apache Tika.
  */
 public class TikaCLI {
-
     private final int MAX_MARK = 20*1024*1024;//20MB
 
     private File extractDir = new File(".");
 
-    private static final Log logger = LogFactory.getLog(TikaCLI.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TikaCLI.class);
 
     public static void main(String[] args) throws Exception {
-
         TikaCLI cli = new TikaCLI();
-        if (! isConfigured()) {
+
+        if (!isConfigured()) {
             PropertyConfigurator.configure(cli.getClass().getResourceAsStream("/log4j.properties"));
         }
 
@@ -171,15 +169,15 @@ public class TikaCLI {
         else {
             Enumeration loggers = LogManager.getCurrentLoggers() ;
             while (loggers.hasMoreElements()) {
-                Logger c = (Logger) loggers.nextElement();
+                org.apache.log4j.Logger c = (org.apache.log4j.Logger) loggers.nextElement();
                 if (c.getAllAppenders().hasMoreElements())
                     return true;
             }
         }
         return false;
     }
-    private class OutputType {
 
+    private class OutputType {
         public void process(
                 InputStream input, OutputStream output, Metadata metadata)
                 throws Exception {
@@ -359,7 +357,7 @@ public class TikaCLI {
             pipeMode = false;
             version();
         } else if (arg.equals("-v") || arg.equals("--verbose")) {
-            Logger.getRootLogger().setLevel(Level.DEBUG);
+            org.apache.log4j.Logger.getRootLogger().setLevel(Level.DEBUG);
         } else if (arg.equals("-g") || arg.equals("--gui")) {
             pipeMode = false;
             if (configFilePath != null){
@@ -1072,7 +1070,7 @@ public class TikaCLI {
                     e.getMessage()
                 );
                 System.err.println(msg);
-                logger.warn(msg, e);
+                LOG.warn(msg, e);
             }
         }
 
diff --git a/tika-batch/pom.xml b/tika-batch/pom.xml
index e0704a6..354a2f9 100644
--- a/tika-batch/pom.xml
+++ b/tika-batch/pom.xml
@@ -49,16 +49,13 @@
       <artifactId>tika-serialization</artifactId>
       <version>${project.version}</version>
     </dependency>
+
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-compress</artifactId>
       <version>${commons.compress.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-    </dependency>
-    <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <version>${cli.version}</version>
@@ -82,6 +79,21 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
+
+    <!-- logging -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
index f35d0d5..2afad39 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcess.java
@@ -68,10 +68,7 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         BATCH_PROCESS_ALIVE_TOO_LONG,
     }
 
-    private static final Logger logger;
-    static {
-        logger = LoggerFactory.getLogger(BatchProcess.class);
-    }
+    private static final Logger LOG = LoggerFactory.getLogger(BatchProcess.class);
 
     private PrintStream outputStreamWriter;
 
@@ -176,7 +173,7 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
                            TimeoutChecker timeoutChecker) {
         alreadyExecuted = true;
         State state = new State();
-        logger.info("BatchProcess starting up");
+        LOG.info("BatchProcess starting up");
 
 
         state.start = new Date().getTime();
@@ -232,7 +229,7 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
                 } else {
                     causeForTermination = CAUSE_FOR_TERMINATION.MAIN_LOOP_EXCEPTION;
                 }
-                logger.error("Main loop execution exception: ", e);
+                LOG.error("Main loop execution exception: {}", e.getMessage(), e);
                 break;
             }
         }
@@ -271,10 +268,9 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         //Now it is time shut down. This will corrupt
         //nio channels via thread interrupts!  Hopefully, everything
         //has shut down by now.
-        logger.trace("About to shutdownNow()");
+        LOG.trace("About to shutdownNow()");
         List<Runnable> neverCalled = ex.shutdownNow();
-        logger.trace("TERMINATED " + ex.isTerminated() + " : "
-                + state.consumersRemoved + " : " + state.crawlersRemoved);
+        LOG.trace("TERMINATED {} : {} : {}", ex.isTerminated(), state.consumersRemoved, state.crawlersRemoved);
 
         int end = state.numConsumers + state.numNonConsumers - state.removed - neverCalled.size();
 
@@ -283,10 +279,10 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
             try {
                 future = completionService.poll(10, TimeUnit.MILLISECONDS);
             } catch (InterruptedException e) {
-                logger.warn("thread interrupt while polling in final shutdown loop");
+                LOG.warn("thread interrupt while polling in final shutdown loop");
                 break;
             }
-            logger.trace("In while future==null loop in final shutdown loop");
+            LOG.trace("In while future==null loop in final shutdown loop");
             if (future == null) {
                 break;
             }
@@ -297,9 +293,8 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
                     FileStarted fileStarted = consumerResult.getFileStarted();
                     if (fileStarted != null
                             && fileStarted.getElapsedMillis() > timeoutThresholdMillis) {
-                        logger.warn(fileStarted.getResourceId()
-                                + "\t caused a file processor to hang or crash. You may need to remove "
-                                + "this file from your input set and rerun.");
+                        LOG.warn("{} caused a file processor to hang or crash. You may need to remove "
+                                + "this file from your input set and rerun.", fileStarted.getResourceId());
                     }
                 } else if (result instanceof FileResourceCrawlerFutureResult) {
                     FileResourceCrawlerFutureResult crawlerResult = (FileResourceCrawlerFutureResult) result;
@@ -307,9 +302,9 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
                     added += crawlerResult.getAdded();
                 } //else ...we don't care about anything else stopping at this point
             } catch (ExecutionException e) {
-                logger.error("Execution exception trying to shutdown after shutdownNow", e);
+                LOG.error("Execution exception trying to shutdown after shutdownNow", e);
             } catch (InterruptedException e) {
-                logger.error("Interrupted exception trying to shutdown after shutdownNow", e);
+                LOG.error("Interrupted exception trying to shutdown after shutdownNow", e);
             }
         }
         //do we need to restart?
@@ -341,9 +336,8 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         timeoutChecker.checkForTimedOutConsumers();
 
         for (FileStarted fs : timedOuts) {
-            logger.warn("A parser was still working on >" + fs.getResourceId() +
-                    "< for " + fs.getElapsedMillis() + " milliseconds after it started." +
-                    " This exceeds the maxTimeoutMillis parameter");
+            LOG.warn("A parser was still working on >{}< for {} milliseconds after it started. This exceeds the maxTimeoutMillis parameter",
+                    fs.getResourceId(), fs.getElapsedMillis());
         }
         double elapsed = ((double) new Date().getTime() - (double) state.start) / 1000.0;
         int processed = 0;
@@ -374,9 +368,9 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         }
         Thread timed = new Thread() {
             public void run() {
-                logger.trace("about to start consumers manager");
+                LOG.trace("about to start consumers manager");
                 consumersManager.init();
-                logger.trace("finished starting consumers manager");
+                LOG.trace("finished starting consumers manager");
             }
         };
         //don't allow this thread to keep process alive
@@ -385,11 +379,11 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         try {
             timed.join(consumersManagerMaxMillis);
         } catch (InterruptedException e) {
-            logger.warn("interruption exception during consumers manager shutdown");
+            LOG.warn("interruption exception during consumers manager shutdown");
         }
         if (timed.isAlive()) {
-            logger.error("ConsumersManager did not start within " + consumersManagerMaxMillis + "ms");
-            throw new BatchNoRestartError("ConsumersManager did not start within "+consumersManagerMaxMillis+"ms");
+            LOG.error("ConsumersManager did not start within {}ms", consumersManagerMaxMillis);
+            throw new BatchNoRestartError("ConsumersManager did not start within " + consumersManagerMaxMillis + "ms");
         }
     }
 
@@ -400,9 +394,9 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         }
         Thread timed = new Thread() {
             public void run() {
-                logger.trace("starting to shutdown consumers manager");
+                LOG.trace("starting to shutdown consumers manager");
                 consumersManager.shutdown();
-                logger.trace("finished shutting down consumers manager");
+                LOG.trace("finished shutting down consumers manager");
             }
         };
         timed.setDaemon(true);
@@ -410,10 +404,10 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
         try {
             timed.join(consumersManagerMaxMillis);
         } catch (InterruptedException e) {
-            logger.warn("interruption exception during consumers manager shutdown");
+            LOG.warn("interruption exception during consumers manager shutdown");
         }
         if (timed.isAlive()) {
-            logger.error("ConsumersManager was still alive during shutdown!");
+            LOG.error("ConsumersManager was still alive during shutdown!");
             throw new BatchNoRestartError("ConsumersManager did not shutdown within: "+
                     consumersManagerMaxMillis+"ms");
         }
@@ -434,14 +428,13 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
             try {
                 Thread.sleep(500);
             } catch (InterruptedException e) {
-                logger.warn("Thread interrupted while trying to politelyAwaitTermination");
+                LOG.warn("Thread interrupted while trying to politelyAwaitTermination");
                 return;
             }
             long elapsed = new Date().getTime()-start;
             if (pauseOnEarlyTerminationMillis > -1 &&
                     elapsed > pauseOnEarlyTerminationMillis) {
-                logger.warn("I waited after an early termination for "+
-                elapsed + ", but there was at least one active consumer");
+                LOG.warn("Waited after an early termination for {}ms, but there was at least one active consumer", elapsed);
                 return;
             }
         }
@@ -457,15 +450,15 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
 
     private int getExitStatus(CAUSE_FOR_TERMINATION causeForTermination, String restartMsg) {
         if (causeForTermination == CAUSE_FOR_TERMINATION.MAIN_LOOP_EXCEPTION_NO_RESTART) {
-            logger.info(CAUSE_FOR_TERMINATION.MAIN_LOOP_EXCEPTION_NO_RESTART.name());
+            LOG.info(CAUSE_FOR_TERMINATION.MAIN_LOOP_EXCEPTION_NO_RESTART.name());
             return BatchProcessDriverCLI.PROCESS_NO_RESTART_EXIT_CODE;
         }
 
         if (restartMsg != null) {
             if (restartMsg.equals(BATCH_CONSTANTS.BATCH_PROCESS_EXCEEDED_MAX_ALIVE_TIME.toString())) {
-                logger.warn(restartMsg);
+                LOG.warn(restartMsg);
             } else {
-                logger.error(restartMsg);
+                LOG.error(restartMsg);
             }
 
             //send over stdout wrapped in outputStreamWriter
@@ -557,17 +550,17 @@ public class BatchProcess implements Callable<ParallelFileProcessingResult> {
                 try {
                     Thread.sleep(timeoutCheckPulseMillis);
                 } catch (InterruptedException e) {
-                    logger.debug("Thread interrupted exception in TimeoutChecker");
+                    LOG.debug("Thread interrupted exception in TimeoutChecker");
                     break;
                     //just stop.
                 }
                 checkForTimedOutConsumers();
                 if (countActiveConsumers() == 0) {
-                    logger.info("No activeConsumers in TimeoutChecker");
+                    LOG.info("No activeConsumers in TimeoutChecker");
                     break;
                 }
             }
-            logger.debug("TimeoutChecker quitting: " + timedOuts.size());
+            LOG.debug("TimeoutChecker quitting: {}", timedOuts.size());
             return new TimeoutFutureResult(timedOuts.size());
         }
 
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
index 50c5053..fdbfa86 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/BatchProcessDriverCLI.java
@@ -47,7 +47,8 @@ public class BatchProcessDriverCLI {
     //should restart the process.
     public static final int PROCESS_NO_RESTART_EXIT_CODE = 254;
     public static final int PROCESS_COMPLETED_SUCCESSFULLY = 0;
-    private static Logger logger = LoggerFactory.getLogger(BatchProcessDriverCLI.class);
+
+    private static Logger LOG = LoggerFactory.getLogger(BatchProcessDriverCLI.class);
 
     private int maxProcessRestarts = -1;
     private long pulseMillis = 1000;
@@ -106,25 +107,24 @@ public class BatchProcessDriverCLI {
     }
 
     public void execute() throws Exception {
-
         interruptWatcherThread.setDaemon(true);
         interruptWatcherThread.start();
-        logger.info("about to start driver");
+
+        LOG.info("about to start driver");
         start();
         while (!userInterrupted) {
             Integer exit = null;
             try {
-                logger.trace("about to check exit value");
+                LOG.trace("about to check exit value");
                 exit = process.exitValue();
-                logger.info("The child process has finished with an exit value of: "+exit);
+                LOG.info("The child process has finished with an exit value of: {}", exit);
                 stop();
             } catch (IllegalThreadStateException e) {
                 //hasn't exited
-                logger.trace("process has not exited; IllegalThreadStateException");
+                LOG.trace("process has not exited; IllegalThreadStateException");
             }
 
-            logger.trace("Before sleep:" +
-                        " exit=" + exit + " receivedRestartMsg=" + receivedRestartMsg);
+            LOG.trace("Before sleep: exit={} receivedRestartMsg={}", exit, receivedRestartMsg);
 
             //Even if the process has exited,
             //wait just a little bit to make sure that
@@ -132,38 +132,33 @@ public class BatchProcessDriverCLI {
             try {
                 Thread.sleep(pulseMillis);
             } catch (InterruptedException e) {
-                logger.trace("interrupted exception during sleep");
+                LOG.trace("interrupted exception during sleep");
             }
-            logger.trace("After sleep:" +
-                    " exit=" + exit + " receivedRestartMsg=" + receivedRestartMsg);
+            LOG.trace("After sleep: exit={} receivedRestartMsg={}", exit, receivedRestartMsg);
             //if we've gotten the message via stdout to restart
             //but the process hasn't exited yet, give it another
             //chance
             if (receivedRestartMsg && exit == null &&
-                    loopsAfterRestartMessageReceived <= waitNumLoopsAfterRestartmessage) {
+                    loopsAfterRestartMessageReceived <= waitNumLoopsAfterRestartMessage) {
                 loopsAfterRestartMessageReceived++;
-                logger.warn("Must restart, still not exited; loops after restart: " +
-                            loopsAfterRestartMessageReceived);
+                LOG.warn("Must restart, still not exited; loops after restart: {}", loopsAfterRestartMessageReceived);
                 continue;
             }
-            if (loopsAfterRestartMessageReceived > waitNumLoopsAfterRestartmessage) {
-                logger.trace("About to try to restart because:" +
-                        " exit=" + exit + " receivedRestartMsg=" + receivedRestartMsg);
-                logger.warn("Restarting after exceeded wait loops waiting for exit: "+
-                        loopsAfterRestartMessageReceived);
+            if (loopsAfterRestartMessageReceived > waitNumLoopsAfterRestartMessage) {
+                LOG.trace("About to try to restart because: exit={} receivedRestartMsg={}", exit, receivedRestartMsg);
+                LOG.warn("Restarting after exceeded wait loops waiting for exit: {}", loopsAfterRestartMessageReceived);
                 boolean restarted = restart(exit, receivedRestartMsg);
                 if (!restarted) {
                     break;
                 }
             } else if (exit != null && exit != BatchProcessDriverCLI.PROCESS_NO_RESTART_EXIT_CODE
                     && exit != BatchProcessDriverCLI.PROCESS_COMPLETED_SUCCESSFULLY) {
-                logger.trace("About to try to restart because:" +
-                            " exit=" + exit + " receivedRestartMsg=" + receivedRestartMsg);
+                LOG.trace("About to try to restart because: exit={} receivedRestartMsg={}", exit, receivedRestartMsg);
 
                 if (exit == BatchProcessDriverCLI.PROCESS_RESTART_EXIT_CODE) {
-                    logger.info("Restarting on expected restart code");
+                    LOG.info("Restarting on expected restart code");
                 } else {
-                    logger.warn("Restarting on unexpected restart code: "+exit);
+                    LOG.warn("Restarting on unexpected restart code: {}", exit);
                 }
                 boolean restarted = restart(exit, receivedRestartMsg);
                 if (!restarted) {
@@ -171,23 +166,24 @@ public class BatchProcessDriverCLI {
                 }
             } else if (exit != null && (exit == PROCESS_COMPLETED_SUCCESSFULLY
                     || exit == BatchProcessDriverCLI.PROCESS_NO_RESTART_EXIT_CODE)) {
-                logger.trace("Will not restart: "+exit);
+                LOG.trace("Will not restart: {}", exit);
                 break;
             }
         }
-        logger.trace("about to call shutdown driver now");
+
+        LOG.trace("about to call shutdown driver now");
         shutdownDriverNow();
-        logger.info("Process driver has completed");
+        LOG.info("Process driver has completed");
     }
 
     private void shutdownDriverNow() {
         if (process != null) {
             for (int i = 0; i < 60; i++) {
 
-                logger.trace("trying to shut down: "+i);
+                LOG.trace("trying to shut down: {}", i);
                 try {
                     int exit = process.exitValue();
-                    logger.trace("trying to stop:"+exit);
+                    LOG.trace("trying to stop: {}", exit);
                     stop();
                     interruptWatcherThread.interrupt();
                     return;
@@ -200,7 +196,7 @@ public class BatchProcessDriverCLI {
                     //swallow
                 }
             }
-            logger.error("Process didn't stop after 60 seconds after shutdown. " +
+            LOG.error("Process didn't stop after 60 seconds after shutdown. " +
                     "I am forcefully killing it.");
         }
         interruptWatcherThread.interrupt();
@@ -221,12 +217,12 @@ public class BatchProcessDriverCLI {
      */
     private boolean restart(Integer exitValue, boolean receivedRestartMsg) throws Exception {
         if (maxProcessRestarts > -1 && numRestarts >= maxProcessRestarts) {
-            logger.warn("Hit the maximum number of process restarts. Driver is shutting down now.");
+            LOG.warn("Hit the maximum number of process restarts. Driver is shutting down now.");
             stop();
             return false;
         }
-        logger.warn("Must restart process (exitValue="+exitValue+" numRestarts="+numRestarts+
-                " receivedRestartMessage="+receivedRestartMsg+")");
+        LOG.warn("Must restart process (exitValue={} numRestarts={} receivedRestartMessage={})",
+                exitValue, numRestarts, receivedRestartMsg);
         stop();
         start();
         numRestarts++;
@@ -236,7 +232,7 @@ public class BatchProcessDriverCLI {
 
     private void stop() {
         if (process != null) {
-            logger.trace("destroying a non-null process");
+            LOG.trace("destroying a non-null process");
             process.destroy();
         }
 
@@ -346,21 +342,21 @@ public class BatchProcessDriverCLI {
         public void run() {
             String line = null;
             try {
-                logger.trace("gobbler starting to read");
+                LOG.trace("gobbler starting to read");
                 while ((line = reader.readLine()) != null && this.running) {
                     if (redirectChildProcessToStdOut) {
-                        System.out.println("BatchProcess:"+line);
+                        System.out.println("BatchProcess:" + line);
                     }
                 }
             } catch (IOException e) {
-                logger.trace("gobbler io exception");
+                LOG.trace("gobbler io exception");
                 //swallow ioe
             }
-            logger.trace("gobbler done");
+            LOG.trace("gobbler done");
         }
 
         private void stopGobblingAndDie() {
-            logger.trace("stop gobbling");
+            LOG.trace("stop gobbling");
             running = false;
             IOUtils.closeQuietly(reader);
         }
@@ -377,18 +373,18 @@ public class BatchProcessDriverCLI {
         public void run() {
             String line = null;
             try {
-                logger.trace("watcher starting to read");
+                LOG.trace("watcher starting to read");
                 while ((line = reader.readLine()) != null && this.running) {
                     if (line.startsWith(BatchProcess.BATCH_CONSTANTS.BATCH_PROCESS_FATAL_MUST_RESTART.toString())) {
                         receivedRestartMsg = true;
                     }
-                    logger.info("BatchProcess: "+line);
+                    LOG.info("BatchProcess: " + line);
                 }
             } catch (IOException e) {
-                logger.trace("watcher io exception");
+                LOG.trace("watcher io exception");
                 //swallow ioe
             }
-            logger.trace("watcher done");
+            LOG.trace("watcher done");
         }
     }
 
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
index 72e4e9c..e234fdd 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceConsumer.java
@@ -72,7 +72,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
     public static String ELAPSED_MILLIS = "elapsedMS";
 
     private static AtomicInteger numConsumers = new AtomicInteger(-1);
-    protected static Logger logger = LoggerFactory.getLogger(FileResourceConsumer.class);
+    protected static final Logger LOG = LoggerFactory.getLogger(FileResourceConsumer.class);
 
     private long maxConsecWaitInMillis = 10*60*1000;// 10 minutes
 
@@ -111,9 +111,9 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
         try {
             FileResource fileResource = getNextFileResource();
             while (fileResource != null) {
-                logger.debug("file consumer is about to process: " + fileResource.getResourceId());
+                LOG.trace("file consumer is about to process: {}", fileResource.getResourceId());
                 boolean consumed = _processFileResource(fileResource);
-                logger.debug("file consumer has finished processing: " + fileResource.getResourceId());
+                LOG.trace("file consumer has finished processing: {}", fileResource.getResourceId());
 
                 if (consumed) {
                     numResourcesConsumed++;
@@ -260,7 +260,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             }
             if (tmp.getElapsedMillis() > staleThresholdMillis) {
                 setEndedState(STATE.TIMED_OUT);
-                logger.error("{}", getXMLifiedLogMsg(
+                LOG.error("{}", getXMLifiedLogMsg(
                         TIMED_OUT,
                         tmp.getResourceId(),
                         ELAPSED_MILLIS, Long.toString(tmp.getElapsedMillis())));
@@ -306,7 +306,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             handler.endElement("", type, type);
             handler.endDocument();
         } catch (SAXException e) {
-            logger.warn("error writing xml stream for: " + resourceId, t);
+            LOG.warn("error writing xml stream for: {}", resourceId, t);
         }
         return handler.toString();
     }
@@ -318,14 +318,14 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             //check to see if thread is interrupted before polling
             if (Thread.currentThread().isInterrupted()) {
                 setEndedState(STATE.THREAD_INTERRUPTED);
-                logger.debug("Consumer thread was interrupted.");
+                LOG.debug("Consumer thread was interrupted.");
                 break;
             }
 
             synchronized(lock) {
                 //need to lock here to prevent race condition with other threads setting state
                 if (currentState != STATE.ACTIVELY_CONSUMING) {
-                    logger.debug("Consumer already closed because of: "+ currentState.toString());
+                    LOG.debug("Consumer already closed because of: {}", currentState);
                     break;
                 }
             }
@@ -337,7 +337,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
                 }
                 break;
             }
-            logger.debug(consumerId + " is waiting for file and the queue size is: " + fileQueue.size());
+            LOG.debug("{} is waiting for file and the queue size is: {}", consumerId, fileQueue.size());
 
             long elapsed = new Date().getTime() - start;
             if (maxConsecWaitInMillis > 0 && elapsed > maxConsecWaitInMillis) {
@@ -353,7 +353,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             try {
                 closeable.close();
             } catch (IOException e){
-                logger.warn(e.getMessage(), e);
+                LOG.warn(e.getMessage(), e);
             }
         }
         closeable = null;
@@ -367,7 +367,7 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             try {
                 ((Flushable)closeable).flush();
             } catch (IOException e) {
-                logger.warn(e.getMessage(), e);
+                LOG.warn(e.getMessage(), e);
             }
         }
         close(closeable);
@@ -407,14 +407,11 @@ public abstract class FileResourceConsumer implements Callable<IFileProcessorFut
             parser.parse(is, handler, m, parseContext);
         } catch (Throwable t) {
             if (t instanceof OutOfMemoryError) {
-                logger.error(getXMLifiedLogMsg(OOM,
-                        resourceId, t));
+                LOG.error(getXMLifiedLogMsg(OOM, resourceId, t));
             } else if (t instanceof Error) {
-                logger.error(getXMLifiedLogMsg(PARSE_ERR,
-                        resourceId, t));
+                LOG.error(getXMLifiedLogMsg(PARSE_ERR, resourceId, t));
             } else {
-                logger.warn(getXMLifiedLogMsg(PARSE_EX,
-                        resourceId, t));
+                LOG.warn(getXMLifiedLogMsg(PARSE_EX, resourceId, t));
                 incrementHandledExceptions();
             }
             throw t;
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceCrawler.java b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceCrawler.java
index 7c3b11c..2b34bc1 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/FileResourceCrawler.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/FileResourceCrawler.java
@@ -41,7 +41,7 @@ public abstract class FileResourceCrawler implements Callable<IFileProcessorFutu
     //how long to pause if can't add to queue
     private static final long PAUSE_INCREMENT_MILLIS = 1000;
 
-    protected static Logger logger = LoggerFactory.getLogger(FileResourceCrawler.class.toString());
+    protected static Logger LOG = LoggerFactory.getLogger(FileResourceCrawler.class.toString());
 
     private int maxFilesToAdd = -1;
     private int maxFilesToConsider = -1;
@@ -80,9 +80,9 @@ public abstract class FileResourceCrawler implements Callable<IFileProcessorFutu
             start();
         } catch (InterruptedException e) {
             //this can be triggered by shutdownNow in BatchProcess
-            logger.info("InterruptedException in FileCrawler", e);
+            LOG.info("InterruptedException in FileCrawler", e);
         } catch (Exception e) {
-            logger.error("Exception in FileResourceCrawler: ", e);
+            LOG.error("Exception in FileResourceCrawler: {}", e.getMessage(), e);
         } finally {
             isActive = false;
         }
@@ -117,23 +117,23 @@ public abstract class FileResourceCrawler implements Callable<IFileProcessorFutu
             long totalConsecutiveWait = 0;
             while (queue.offer(fileResource, 1L, TimeUnit.SECONDS) == false) {
 
-                logger.info("FileResourceCrawler is pausing.  Queue is full: " + queue.size());
+                LOG.info("FileResourceCrawler is pausing. Queue is full: {}", queue.size());
                 Thread.sleep(PAUSE_INCREMENT_MILLIS);
                 totalConsecutiveWait += PAUSE_INCREMENT_MILLIS;
                 if (maxConsecWaitInMillis > -1 && totalConsecutiveWait > maxConsecWaitInMillis) {
                     timedOut = true;
-                    logger.error("Crawler had to wait longer than max consecutive wait time.");
+                    LOG.error("Crawler had to wait longer than max consecutive wait time.");
                     throw new InterruptedException("FileResourceCrawler had to wait longer than max consecutive wait time.");
                 }
                 if (Thread.currentThread().isInterrupted()) {
-                    logger.info("FileResourceCrawler shutting down because of interrupted thread.");
+                    LOG.info("FileResourceCrawler shutting down because of interrupted thread.");
                     throw new InterruptedException("FileResourceCrawler interrupted.");
                 }
             }
             isAdded = true;
             added++;
         } else {
-            logger.debug("crawler did not select: "+fileResource.getResourceId());
+            LOG.debug("crawler did not select: {}", fileResource.getResourceId());
         }
         considered++;
         return (isAdded)?ADDED:SKIPPED;
@@ -142,7 +142,7 @@ public abstract class FileResourceCrawler implements Callable<IFileProcessorFutu
     //Warning! Depending on the value of maxConsecWaitInMillis
     //this could try forever in vain to add poison to the queue.
     private void shutdown() throws InterruptedException{
-        logger.debug("FileResourceCrawler entering shutdown");
+        LOG.debug("FileResourceCrawler entering shutdown");
         if (hasCompletedCrawling || shutDownNoPoison) {
             return;
         }
@@ -150,19 +150,19 @@ public abstract class FileResourceCrawler implements Callable<IFileProcessorFutu
         long start = new Date().getTime();
         while (queue.offer(new PoisonFileResource(), 1L, TimeUnit.SECONDS)) {
             if (shutDownNoPoison) {
-                logger.debug("quitting the poison loop because shutDownNoPoison is now true");
+                LOG.debug("quitting the poison loop because shutDownNoPoison is now true");
                 return;
             }
             if (Thread.currentThread().isInterrupted()) {
-                logger.debug("thread interrupted while trying to add poison");
+                LOG.debug("thread interrupted while trying to add poison");
                 return;
             }
             long elapsed = new Date().getTime() - start;
             if (maxConsecWaitInMillis > -1 && elapsed > maxConsecWaitInMillis) {
-                logger.error("Crawler timed out while trying to add poison");
+                LOG.error("Crawler timed out while trying to add poison");
                 return;
             }
-            logger.debug("added "+i+" number of PoisonFileResource(s)");
+            LOG.debug("added {} number of PoisonFileResource(s)", i);
             if (i++ >= numConsumers) {
                 break;
             }
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/Interrupter.java b/tika-batch/src/main/java/org/apache/tika/batch/Interrupter.java
index 6a0439d..c1e31ba 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/Interrupter.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/Interrupter.java
@@ -36,8 +36,8 @@ import static java.nio.charset.StandardCharsets.UTF_8;
  * In the future, this may implement a common IInterrupter interface for more flexibility.
  */
 public class Interrupter implements Callable<IFileProcessorFutureResult> {
+    private static final Logger LOG = LoggerFactory.getLogger(Interrupter.class);
 
-    private Logger logger = LoggerFactory.getLogger(Interrupter.class);
 	public IFileProcessorFutureResult call(){
 		try{
 			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, UTF_8));
@@ -52,7 +52,7 @@ public class Interrupter implements Callable<IFileProcessorFutureResult> {
 		} catch (InterruptedException e){
 		    //canceller was interrupted
 		} catch (IOException e){
-            logger.error("IOException from STDIN in CommandlineInterrupter.");
+            LOG.error("IOException from STDIN in CommandlineInterrupter.");
 		}
 		return new InterrupterFutureResult();
 	}
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/StatusReporter.java b/tika-batch/src/main/java/org/apache/tika/batch/StatusReporter.java
index 6ce1a17..7772d6c 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/StatusReporter.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/StatusReporter.java
@@ -32,8 +32,7 @@ import org.slf4j.LoggerFactory;
  */
 
 public class StatusReporter implements Callable<IFileProcessorFutureResult> {
-
-    private final Logger logger = LoggerFactory.getLogger(StatusReporter.class);
+    private static final Logger LOG = LoggerFactory.getLogger(StatusReporter.class);
 
     //require references to these so that the
     //StatusReporter can query them when it wakes up
@@ -70,7 +69,7 @@ public class StatusReporter implements Callable<IFileProcessorFutureResult> {
      * @param s string to report
      */
     protected void report(String s) {
-        logger.info(s);
+        LOG.info(s);
     }
 
     /**
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/AbstractFSConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/AbstractFSConsumer.java
index a4b27b0..d31e723 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/AbstractFSConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/AbstractFSConsumer.java
@@ -50,8 +50,7 @@ public abstract class AbstractFSConsumer extends FileResourceConsumer {
         } catch (IOException e) {
             //This can happen if the disk has run out of space,
             //or if there was a failure with mkdirs in fsOSFactory
-            logger.error("{}", getXMLifiedLogMsg(IO_OS,
-                    fileResource.getResourceId(), e));
+            LOG.error("{}", getXMLifiedLogMsg(IO_OS, fileResource.getResourceId(), e));
             throw new BatchNoRestartError("IOException trying to open output stream for " +
                     fileResource.getResourceId(), e);
         }
@@ -68,8 +67,7 @@ public abstract class AbstractFSConsumer extends FileResourceConsumer {
         try {
             is = fileResource.openInputStream();
         } catch (IOException e) {
-            logger.warn("{}", getXMLifiedLogMsg(IO_IS,
-                    fileResource.getResourceId(), e));
+            LOG.warn("{}", getXMLifiedLogMsg(IO_IS, fileResource.getResourceId(), e));
             flushAndClose(is);
         }
         return is;
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/BasicTikaFSConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/BasicTikaFSConsumer.java
index 636f4d2..087a482 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/BasicTikaFSConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/BasicTikaFSConsumer.java
@@ -77,7 +77,7 @@ public class BasicTikaFSConsumer extends AbstractFSConsumer {
         //os can be null if fsOSFactory is set to skip processing a file if the output
         //file already exists
         if (os == null) {
-            logger.debug("Skipping: " + fileResource.getMetadata().get(FSProperties.FS_REL_PATH));
+            LOG.debug("Skipping: {}", fileResource.getMetadata().get(FSProperties.FS_REL_PATH));
             return false;
         }
 
@@ -91,8 +91,7 @@ public class BasicTikaFSConsumer extends AbstractFSConsumer {
             handler = contentHandlerFactory.getNewContentHandler(os, getOutputEncoding());
         } catch (UnsupportedEncodingException e) {
             incrementHandledExceptions();
-            logger.error(getXMLifiedLogMsg("output_encoding_ex",
-                    fileResource.getResourceId(), e));
+            LOG.error(getXMLifiedLogMsg("output_encoding_ex", fileResource.getResourceId(), e));
             flushAndClose(os);
             throw new RuntimeException(e);
         }
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
index 5bf96a9..84a0f91 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSBatchProcessCLI.java
@@ -45,10 +45,10 @@ import org.slf4j.LoggerFactory;
 import org.slf4j.MarkerFactory;
 
 public class FSBatchProcessCLI {
-
     public static String FINISHED_STRING = "Main thread in TikaFSBatchCLI has finished processing.";
 
-    private static Logger logger = LoggerFactory.getLogger(FSBatchProcessCLI.class);
+    private static Logger LOG = LoggerFactory.getLogger(FSBatchProcessCLI.class);
+
     private final Options options;
 
     public FSBatchProcessCLI(String[] args) throws IOException {
@@ -76,7 +76,7 @@ public class FSBatchProcessCLI {
             is = TikaInputStream.get(batchConfigFile);
         } else {
             if (logDefault) {
-                logger.info("No config file set via -bc, relying on tika-app-batch-config.xml or default-tika-batch-config.xml");
+                LOG.info("No config file set via -bc, relying on tika-app-batch-config.xml or default-tika-batch-config.xml");
             }
             //test to see if there's a tika-app-batch-config.xml on the path
             URL config = FSBatchProcessCLI.class.getResource("/tika-app-batch-config.xml");
@@ -151,8 +151,8 @@ public class FSBatchProcessCLI {
             cli.execute(args);
         } catch (Throwable t) {
             t.printStackTrace();
-            logger.error(MarkerFactory.getMarker("FATAL"),
-                    "Fatal exception from FSBatchProcessCLI: " + t.getMessage(), t);
+            LOG.error(MarkerFactory.getMarker("FATAL"),
+                    "Fatal exception from FSBatchProcessCLI: {}", t.getMessage(), t);
             System.exit(BatchProcessDriverCLI.PROCESS_NO_RESTART_EXIT_CODE);
         }
     }
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSDirectoryCrawler.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSDirectoryCrawler.java
index a718abc..5177956 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSDirectoryCrawler.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSDirectoryCrawler.java
@@ -78,7 +78,7 @@ public class FSDirectoryCrawler extends FileResourceCrawler {
     private void addFiles(Path directory) throws InterruptedException {
 
         if (directory == null) {
-            logger.warn("FSFileAdder asked to process null directory?!");
+            LOG.warn("FSFileAdder asked to process null directory?!");
             return;
         }
 
@@ -88,11 +88,10 @@ public class FSDirectoryCrawler extends FileResourceCrawler {
                 files.add(p);
             }
         } catch (IOException e) {
-            logger.warn("FSFileAdder couldn't read "+directory.toAbsolutePath() +
-            ": "+e.getMessage(), e);
+            LOG.warn("FSFileAdder couldn't read {}: {}", directory.toAbsolutePath(), e.getMessage(), e);
         }
         if (files.size() == 0) {
-            logger.info("Empty directory: " + directory.toAbsolutePath());
+            LOG.info("Empty directory: {}", directory.toAbsolutePath());
             return;
         }
 
@@ -110,8 +109,7 @@ public class FSDirectoryCrawler extends FileResourceCrawler {
                 throw new InterruptedException("file adder interrupted");
             }
             if (!Files.isReadable(f)) {
-                logger.warn("Skipping -- "+f.toAbsolutePath()+
-                        " -- file/directory is not readable");
+                LOG.warn("Skipping -- {} -- file/directory is not readable", f.toAbsolutePath());
                 continue;
             }
             if (Files.isDirectory(f)) {
@@ -124,10 +122,10 @@ public class FSDirectoryCrawler extends FileResourceCrawler {
             }
             int added = tryToAdd(new FSFileResource(root, f));
             if (added == FileResourceCrawler.STOP_NOW) {
-                logger.debug("crawler has hit a limit: "+f.toAbsolutePath() + " : " + added);
+                LOG.debug("crawler has hit a limit: {} : {}", f.toAbsolutePath(), added);
                 return;
             }
-            logger.debug("trying to add: "+f.toAbsolutePath() + " : " + added);
+            LOG.debug("trying to add: {} : {}", f.toAbsolutePath(), added);
         }
 
         for (Path f : directories) {
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSListCrawler.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSListCrawler.java
index 9bb31f6..bc5fdb1 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/FSListCrawler.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/FSListCrawler.java
@@ -92,12 +92,12 @@ public class FSListCrawler extends FileResourceCrawler {
             }
             Path f = Paths.get(root.toString(), line);
             if (! Files.exists(f)) {
-                logger.warn("File doesn't exist:"+f.toAbsolutePath());
+                LOG.warn("File doesn't exist: {}", f.toAbsolutePath());
                 line = nextLine();
                 continue;
             }
             if (Files.isDirectory(f)) {
-                logger.warn("File is a directory:"+f.toAbsolutePath());
+                LOG.warn("File is a directory: {}", f.toAbsolutePath());
                 line = nextLine();
                 continue;
             }
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
index 3722873..5a334b1 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/RecursiveParserWrapperFSConsumer.java
@@ -83,7 +83,7 @@ public class RecursiveParserWrapperFSConsumer extends AbstractFSConsumer {
         OutputStream os = getOutputStream(fsOSFactory, fileResource);
 
         if (os == null) {
-            logger.debug("Skipping: " + fileResource.getMetadata().get(FSProperties.FS_REL_PATH));
+            LOG.debug("Skipping: {}", fileResource.getMetadata().get(FSProperties.FS_REL_PATH));
             return false;
         }
 
@@ -131,8 +131,7 @@ public class RecursiveParserWrapperFSConsumer extends AbstractFSConsumer {
             JsonMetadataList.toJson(metadataList, writer);
         } catch (Exception e) {
             //this is a stop the world kind of thing
-            logger.error("{}", getXMLifiedLogMsg(IO_OS+"json",
-                    fileResource.getResourceId(), e));
+            LOG.error("{}", getXMLifiedLogMsg(IO_OS + "json", fileResource.getResourceId(), e));
             throw new RuntimeException(e);
         } finally {
             flushAndClose(writer);
diff --git a/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java b/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
index 6e447b5..c23b269 100644
--- a/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
+++ b/tika-batch/src/main/java/org/apache/tika/batch/fs/strawman/StrawManTikaAppDriver.java
@@ -53,6 +53,7 @@ import org.slf4j.MarkerFactory;
  *
  */
 public class StrawManTikaAppDriver implements Callable<Integer> {
+    private static final Logger LOG = LoggerFactory.getLogger(StrawManTikaAppDriver.class);
 
     private static AtomicInteger threadCount = new AtomicInteger(0);
     private final int totalThreads;
@@ -60,8 +61,6 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
     private Path inputRoot = null;
     private Path outputRoot = null;
     private String[] args = null;
-    private Logger logger = LoggerFactory.getLogger(StrawManTikaAppDriver.class);
-
 
     public StrawManTikaAppDriver(Path inputRoot, Path outputRoot,
                                  int totalThreads, String[] args) {
@@ -95,8 +94,8 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
             try {
                 Files.createDirectories(outputFile.getParent());
             } catch (IOException e) {
-                logger.error(MarkerFactory.getMarker("FATAL"),
-                        "parent directory for "+ outputFile + " was not made!");
+                LOG.error(MarkerFactory.getMarker("FATAL"),
+                        "parent directory for {} was not made!", outputFile);
                 throw new RuntimeException("couldn't make parent file for " + outputFile);
             }
             List<String> commandLine = new ArrayList<>();
@@ -106,7 +105,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
             commandLine.add("-t");
             commandLine.add("\""+outputFile.toAbsolutePath()+"\"");
             ProcessBuilder builder = new ProcessBuilder(commandLine.toArray(new String[commandLine.size()]));
-            logger.info("about to process: "+file.toAbsolutePath());
+            LOG.info("about to process: {}", file.toAbsolutePath());
             Process proc = null;
             RedirectGobbler gobbler = null;
             Thread gobblerThread = null;
@@ -117,7 +116,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
                 gobblerThread = new Thread(gobbler);
                 gobblerThread.start();
             } catch (IOException e) {
-                logger.error(e.getMessage(), e);
+                LOG.error(e.getMessage(), e);
                 return FileVisitResult.CONTINUE;
             }
 
@@ -139,7 +138,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
                 }
             }
             if (!finished) {
-                logger.warn("Had to kill process working on: " + file.toAbsolutePath());
+                LOG.warn("Had to kill process working on: {}", file.toAbsolutePath());
                 proc.destroy();
             }
             gobbler.close();
@@ -159,7 +158,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
         Files.walkFileTree(inputRoot, v);
         int processed = v.getProcessed();
         double elapsedSecs = ((double)new Date().getTime()-(double)start)/(double)1000;
-        logger.info("Finished processing " + processed + " files in " + elapsedSecs + " seconds.");
+        LOG.info("Finished processing {} files in {} seconds.", processed, elapsedSecs);
         return processed;
     }
 
@@ -177,17 +176,17 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
                 try {
                     redirectOs.flush();
                 } catch (IOException e) {
-                    logger.error("can't flush");
+                    LOG.error("can't flush");
                 }
                 try {
                     redirectIs.close();
                 } catch (IOException e) {
-                    logger.error("can't close input in redirect gobbler");
+                    LOG.error("can't close input in redirect gobbler");
                 }
                 try {
                     redirectOs.close();
                 } catch (IOException e) {
-                    logger.error("can't close output in redirect gobbler");
+                    LOG.error("can't close output in redirect gobbler");
                 }
             }
         }
@@ -197,7 +196,7 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
             try {
                 IOUtils.copy(redirectIs, redirectOs);
             } catch (IOException e) {
-                logger.error("IOException while gobbling");
+                LOG.error("IOException while gobbling");
             }
         }
     }
@@ -242,13 +241,11 @@ public class StrawManTikaAppDriver implements Callable<Integer> {
                 if (future != null) {
                     totalFilesProcessed += future.get();
                 }
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            } catch (ExecutionException e) {
-                e.printStackTrace();
+            } catch (InterruptedException | ExecutionException e) {
+                LOG.error(e.getMessage(), e);
             }
         }
-        double elapsedSeconds = (double)(new Date().getTime()-start)/(double)1000;
-        System.out.println("Processed "+totalFilesProcessed + " in " + elapsedSeconds + " seconds");
+        double elapsedSeconds = (double)(new Date().getTime() - start) / (double)1000;
+        LOG.info("Processed {} in {} seconds", totalFilesProcessed, elapsedSeconds);
     }
 }
diff --git a/tika-bundle/pom.xml b/tika-bundle/pom.xml
index 4e04451..28ddc1a 100644
--- a/tika-bundle/pom.xml
+++ b/tika-bundle/pom.xml
@@ -93,11 +93,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
       <version>1</version>
@@ -109,6 +104,13 @@
       <version>5.0.0</version>
       <scope>test</scope>
     </dependency>
+
+    <!-- use non-log4j slf4j backend to prevent main classloader from loading log4j classes -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/tika-server/src/main/resources/commons-logging.properties b/tika-bundle/src/test/resources/log4j.properties
similarity index 61%
copy from tika-server/src/main/resources/commons-logging.properties
copy to tika-bundle/src/test/resources/log4j.properties
index 07d7dc0..7d3b372 100644
--- a/tika-server/src/main/resources/commons-logging.properties
+++ b/tika-bundle/src/test/resources/log4j.properties
@@ -1,4 +1,3 @@
-#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -13,18 +12,13 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
 
-handlers = java.util.logging.ConsoleHandler
+#info,debug, error,fatal ...
+log4j.rootLogger=info,stderr
 
-# Set the default logging level for the root logger
-.level = ALL
-    
-# Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = ALL
-        
-# Set the default formatter for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
+#console
+log4j.appender.stderr=org.apache.log4j.ConsoleAppender
+log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
+log4j.appender.stderr.Target=System.err
 
-org.apache.cxf.level = INFO
+log4j.appender.stderr.layout.ConversionPattern= %-5p %m%n
diff --git a/tika-eval/src/main/java/org/apache/tika/eval/AbstractProfiler.java b/tika-eval/src/main/java/org/apache/tika/eval/AbstractProfiler.java
index a898e5a..4d04f23 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/AbstractProfiler.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/AbstractProfiler.java
@@ -258,13 +258,13 @@ public abstract class AbstractProfiler extends FileResourceConsumer {
         try {
             return FilenameUtils.getName(path);
         } catch (IllegalArgumentException e) {
-            logger.warn(e.getMessage() + " in "+path);
+            LOG.warn("{} in {}", e.getMessage(), path);
         }
         path = path.replaceAll("\u0000", " ");
         try {
             return FilenameUtils.getName(path);
         } catch (IllegalArgumentException e) {
-            logger.warn("Again: " + e.getMessage() + " in "+path);
+            LOG.warn("Again: {} in {}", e.getMessage(), path);
         }
         //give up
         return "";
@@ -319,7 +319,7 @@ public abstract class AbstractProfiler extends FileResourceConsumer {
             commonTokenResult = commonTokenCountManager.countTokenOverlaps(langid,
                     tokenCounter.getTokens(fieldName));
         } catch (IOException e) {
-            logger.error(e.getMessage(), e);
+            LOG.error("{}", e.getMessage(), e);
         }
         data.put(Cols.COMMON_TOKENS_LANG, commonTokenResult.getLangCode());
         data.put(Cols.NUM_COMMON_TOKENS, Integer.toString(commonTokenResult.getCommonTokens()));
@@ -574,7 +574,7 @@ public abstract class AbstractProfiler extends FileResourceConsumer {
         try {
             srcLen = Files.size(inputFile);
         } catch (IOException e) {
-            logger.warn("Couldn't get length for: "+inputFile.toAbsolutePath());
+            LOG.warn("Couldn't get length for: {}", inputFile.toAbsolutePath());
         }
         return new EvalFilePaths(relativeSourceFilePath, extractFile, srcLen);
     }
diff --git a/tika-example/pom.xml b/tika-example/pom.xml
index 1096dd9..588f8f2 100644
--- a/tika-example/pom.xml
+++ b/tika-example/pom.xml
@@ -110,6 +110,12 @@
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>3.0.2.RELEASE</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>junit</groupId>
diff --git a/tika-example/src/main/java/org/apache/tika/example/ImportContextImpl.java b/tika-example/src/main/java/org/apache/tika/example/ImportContextImpl.java
index 5cbd6e8..514f05c 100755
--- a/tika-example/src/main/java/org/apache/tika/example/ImportContextImpl.java
+++ b/tika-example/src/main/java/org/apache/tika/example/ImportContextImpl.java
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  * <code>ImportContextImpl</code>...
  */
 public class ImportContextImpl implements ImportContext {
-    private static Logger log = LoggerFactory.getLogger(ImportContextImpl.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ImportContextImpl.class);
 
     private final IOListener ioListener;
     private final Item importRoot;
@@ -77,7 +77,7 @@ public class ImportContextImpl implements ImportContext {
         this.systemId = systemId;
         this.inputCtx = ctx;
         this.ioListener = (ioListener != null) ? ioListener
-                : new DefaultIOListener(log);
+                : new DefaultIOListener(LOG);
         this.detector = detector;
 
         Metadata metadata = new Metadata();
@@ -177,8 +177,7 @@ public class ImportContextImpl implements ImportContext {
             length = inputFile.length();
         }
         if (length < 0) {
-            log.debug("Unable to determine content length -> default value = "
-                    + IOUtil.UNDEFINED_LENGTH);
+            LOG.debug("Unable to determine content length -> default value = {}", IOUtil.UNDEFINED_LENGTH);
         }
         return length;
     }
diff --git a/tika-example/src/main/java/org/apache/tika/example/LazyTextExtractorField.java b/tika-example/src/main/java/org/apache/tika/example/LazyTextExtractorField.java
index 4ce5f71..7567bc4 100755
--- a/tika-example/src/main/java/org/apache/tika/example/LazyTextExtractorField.java
+++ b/tika-example/src/main/java/org/apache/tika/example/LazyTextExtractorField.java
@@ -50,7 +50,7 @@ public class LazyTextExtractorField extends AbstractField {
     /**
      * The logger instance for this class.
      */
-    private static final Logger log = LoggerFactory.getLogger(LazyTextExtractorField.class);
+    private static final Logger LOG = LoggerFactory.getLogger(LazyTextExtractorField.class);
 
     /**
      * The exception used to forcibly terminate the extraction process when the
@@ -97,7 +97,7 @@ public class LazyTextExtractorField extends AbstractField {
             }
             return extract;
         } catch (InterruptedException e) {
-            log.error("Text extraction thread was interrupted", e);
+            LOG.error("Text extraction thread was interrupted", e);
             return "";
         }
     }
@@ -180,7 +180,7 @@ public class LazyTextExtractorField extends AbstractField {
                 // Capture and ignore
             } catch (Throwable t) {
                 if (t != STOP) {
-                    log.debug("Failed to extract text.", t);
+                    LOG.debug("Failed to extract text.", t);
                     setExtractedText("TextExtractionError");
                     return;
                 }
diff --git a/tika-parent/pom.xml b/tika-parent/pom.xml
index 3e81f46..9220c3d 100644
--- a/tika-parent/pom.xml
+++ b/tika-parent/pom.xml
@@ -289,17 +289,12 @@
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
-        <artifactId>jul-to-slf4j</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
-        <artifactId>log4j-over-slf4j</artifactId>
+        <artifactId>jul-to-slf4j</artifactId>
         <version>${slf4j.version}</version>
       </dependency>
     </dependencies>
diff --git a/tika-parsers/pom.xml b/tika-parsers/pom.xml
index 3a86c0c..e4d04ca 100644
--- a/tika-parsers/pom.xml
+++ b/tika-parsers/pom.xml
@@ -86,6 +86,12 @@
       <groupId>com.healthmarketscience.jackcess</groupId>
       <artifactId>jackcess</artifactId>
       <version>2.1.4</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>com.healthmarketscience.jackcess</groupId>
@@ -142,11 +148,23 @@
       <groupId>org.apache.pdfbox</groupId>
       <artifactId>pdfbox</artifactId>
       <version>${pdfbox.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.pdfbox</groupId>
       <artifactId>pdfbox-tools</artifactId>
       <version>${pdfbox.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.pdfbox</groupId>
@@ -251,6 +269,16 @@
       <groupId>com.github.junrar</groupId>
       <artifactId>junrar</artifactId>
       <version>0.7</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging-api</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.cxf</groupId>
@@ -360,6 +388,12 @@
       <groupId>edu.ucar</groupId>
       <artifactId>netcdf4</artifactId>
       <version>${netcdf-java.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>edu.ucar</groupId>
@@ -372,6 +406,10 @@
       <version>${netcdf-java.version}</version>
       <exclusions>
         <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+        <exclusion>
           <groupId>org.slf4j</groupId>
           <artifactId>jcl-over-slf4j</artifactId>
         </exclusion>
@@ -381,6 +419,12 @@
       <groupId>edu.ucar</groupId>
       <artifactId>httpservices</artifactId>
       <version>${netcdf-java.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <!-- Apache Commons CSV -->
     <dependency>
@@ -409,12 +453,39 @@
       <artifactId>geoapi</artifactId>
       <version>3.0.0</version>
     </dependency>
+
     <!-- Apache cTAKES -->
     <dependency>
       <groupId>org.apache.ctakes</groupId>
       <artifactId>ctakes-core</artifactId>
       <version>3.2.2</version>
       <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>log4j</groupId>
+          <artifactId>log4j</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-context</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-beans</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
 
     <!--Jackson parse String to JSON-->
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParser.java
index b4ec6da..3803d44 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParser.java
@@ -26,7 +26,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.logging.Logger;
 
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
@@ -35,6 +34,8 @@ import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.geo.topic.gazetteer.GeoGazetteerClient;
 import org.apache.tika.parser.geo.topic.gazetteer.Location;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -43,7 +44,7 @@ import opennlp.tools.namefind.TokenNameFinderModel;
 
 public class GeoParser extends AbstractParser {
     private static final long serialVersionUID = -2241391757440215491L;
-    private static final Logger LOG = Logger.getLogger(GeoParser.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(GeoParser.class);
     private static final MediaType MEDIA_TYPE = 
                                     MediaType.application("geotopic");
     private static final Set<MediaType> SUPPORTED_TYPES = 
@@ -87,10 +88,9 @@ public class GeoParser extends AbstractParser {
                 TokenNameFinderModel model = new TokenNameFinderModel(modelUrl);
                 this.nameFinder = new NameFinderME(model);
             } catch (Exception e) {
-                LOG.warning("Named Entity Extractor setup failed: " + e);
+                LOG.warn("Named Entity Extractor setup failed: {}", e.getMessage(), e);
                 this.available = false;
             }
-        	
         }
         initialized = true;
     }
@@ -112,7 +112,7 @@ public class GeoParser extends AbstractParser {
         try {
             extractor = new NameEntityExtractor(nameFinder);
         } catch (Exception e) {
-            LOG.warning("Named Entity Extractor setup failed: " + e);
+            LOG.warn("Named Entity Extractor setup failed: {}", e.getMessage(), e);
             return;
         }
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParserConfig.java b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParserConfig.java
index ccef5c3..b3ee246 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParserConfig.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/GeoParserConfig.java
@@ -17,6 +17,9 @@
 
 package org.apache.tika.parser.geo.topic;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -24,14 +27,13 @@ import java.io.Serializable;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Properties;
-import java.util.logging.Logger;
 
 public class GeoParserConfig implements Serializable {
     private static final long serialVersionUID = -3167692634278575818L;
     private URL nerModelUrl = null;
     private String gazetteerRestEndpoint = null;
 
-	private static final Logger LOG = Logger.getLogger(GeoParserConfig.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(GeoParserConfig.class);
 
     public GeoParserConfig() {
         this.nerModelUrl = GeoParserConfig.class.getResource("en-ner-location.bin");
@@ -51,13 +53,13 @@ public class GeoParserConfig implements Serializable {
         try {
             props.load(stream);
         } catch (IOException e) {
-        	LOG.warning("GeoTopicConfig.properties not found in class path");
+            LOG.warn("GeoTopicConfig.properties not found in class path");
         } finally {
             if (stream != null) {
                 try {
                     stream.close();
                 } catch (IOException ioe) {
-                	LOG.severe("Unable to close stream: " + ioe.getMessage());
+                    LOG.error("Unable to close stream: {}", ioe.getMessage());
                 }
             }
         }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/gazetteer/GeoGazetteerClient.java b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/gazetteer/GeoGazetteerClient.java
index 2cb193e..77c5323 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/gazetteer/GeoGazetteerClient.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/geo/topic/gazetteer/GeoGazetteerClient.java
@@ -20,7 +20,6 @@ package org.apache.tika.parser.geo.topic.gazetteer;
 import java.lang.reflect.Type;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Logger;
 
 import org.apache.commons.io.Charsets;
 import org.apache.commons.io.IOUtils;
@@ -33,6 +32,8 @@ import org.apache.tika.parser.geo.topic.GeoParserConfig;
 
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 public class GeoGazetteerClient {
@@ -40,7 +41,7 @@ public class GeoGazetteerClient {
 	private static final String SEARCH_PARAM = "s";
 	private static final String PING = "/api/ping";
 
-	private static final Logger LOG = Logger.getLogger(GeoGazetteerClient.class.getName());
+	private static final Logger LOG = LoggerFactory.getLogger(GeoGazetteerClient.class);
 
 	private String url;
 	
@@ -80,7 +81,7 @@ public class GeoGazetteerClient {
 			return new Gson().fromJson(respJson, typeDef);
 			
 		} catch (Exception e) {
-			LOG.severe(e.getMessage());
+			LOG.error(e.getMessage(), e);
 		}
 		
 		return null;
@@ -102,7 +103,7 @@ public class GeoGazetteerClient {
 			}
 			
 		} catch (Exception e) {
-			LOG.severe(e.getMessage());
+			LOG.error(e.getMessage(), e);
 		}
 		
 		return false;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
index 1538111..c115956 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/html/HtmlParser.java
@@ -34,6 +34,8 @@ import org.apache.tika.parser.AbstractEncodingDetectorParser;
 import org.apache.tika.parser.ParseContext;
 import org.ccil.cowan.tagsoup.HTMLSchema;
 import org.ccil.cowan.tagsoup.Schema;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -49,6 +51,8 @@ public class HtmlParser extends AbstractEncodingDetectorParser {
      */
     private static final long serialVersionUID = 7895315240498733128L;
 
+    private static final Logger LOG = LoggerFactory.getLogger(HtmlParser.class);
+
     private static final MediaType XHTML = MediaType.application("xhtml+xml");
     private static final MediaType WAP_XHTML = MediaType.application("vnd.wap.xhtml+xml");
     private static final MediaType X_ASP = MediaType.application("x-asp");
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
index 236d2d0..97fdc33 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageParser.java
@@ -28,8 +28,6 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.apache.commons.io.input.CloseShieldInputStream;
 import org.apache.tika.exception.TikaException;
@@ -40,19 +38,20 @@ import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AbstractParser;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.sax.XHTMLContentHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
 public class ImageParser extends AbstractParser {
-
     /**
      * Serial version UID
      */
     private static final long serialVersionUID = 7852529269245520335L;
 
-    private static final Logger LOGGER = Logger.getLogger(ImageParser.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(ImageParser.class);
 
     private static final MediaType MAIN_BMP_TYPE = MediaType.image("bmp");
     private static final MediaType OLD_BMP_TYPE = MediaType.image("x-ms-bmp");
@@ -72,8 +71,7 @@ public class ImageParser extends AbstractParser {
             Class.forName("com.levigo.jbig2.JBIG2ImageReader");
             TMP_SUPPORTED.add(MediaType.image("x-jbig2"));
         } catch (ClassNotFoundException e) {
-            LOGGER.log(Level.WARNING,
-                    "JBIG2ImageReader not loaded. jbig2 files will be ignored");
+            LOG.warn("JBIG2ImageReader not loaded. jbig2 files will be ignored");
         }
     }
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
index 7ab0f49..9c85f30 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/AbstractPOIFSExtractor.java
@@ -19,8 +19,6 @@ package org.apache.tika.parser.microsoft;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.poi.hpsf.ClassID;
 import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
@@ -48,7 +46,6 @@ import org.apache.tika.sax.XHTMLContentHandler;
 import org.xml.sax.SAXException;
 
 abstract class AbstractPOIFSExtractor {
-    private static final Log logger = LogFactory.getLog(AbstractPOIFSExtractor.class);
     private final EmbeddedDocumentUtil embeddedDocumentUtil;
     private PasswordProvider passwordProvider;
     protected final Metadata parentMetadata;//metadata of the parent/container document
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ListManager.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
index 504573c..6c5a5f1 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/ListManager.java
@@ -18,8 +18,6 @@ package org.apache.tika.parser.microsoft;
 
 import java.util.NoSuchElementException;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.hwpf.model.ListData;
 import org.apache.poi.hwpf.model.ListFormatOverrideLevel;
@@ -35,8 +33,6 @@ import org.apache.poi.hwpf.usermodel.Paragraph;
  * <p>Further, this class does not yet handle overrides</p>
  */
 public class ListManager extends AbstractListManager {
-
-    private static final Log logger = LogFactory.getLog(ListManager.class);
     private final ListTables listTables;
 
     /**
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/SummaryExtractor.java b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/SummaryExtractor.java
index ce9b2fa..3e2ea26 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/SummaryExtractor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/microsoft/SummaryExtractor.java
@@ -22,8 +22,6 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.poi.hpsf.CustomProperties;
 import org.apache.poi.hpsf.DocumentSummaryInformation;
 import org.apache.poi.hpsf.MarkUnsupportedException;
@@ -44,12 +42,14 @@ import org.apache.tika.metadata.OfficeOpenXMLExtended;
 import org.apache.tika.metadata.PagedText;
 import org.apache.tika.metadata.Property;
 import org.apache.tika.metadata.TikaCoreProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Extractor for Common OLE2 (HPSF) metadata
  */
 public class SummaryExtractor {
-    private static final Log logger = LogFactory.getLog(AbstractPOIFSExtractor.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractPOIFSExtractor.class);
 
     private static final String SUMMARY_INFORMATION =
             SummaryInformation.DEFAULT_STREAM_NAME;
@@ -97,7 +97,7 @@ public class SummaryExtractor {
         } catch (MarkUnsupportedException e) {
             throw new TikaException("Invalid DocumentInputStream", e);
         } catch (Exception e) {
-            logger.warn("Ignoring unexpected exception while parsing summary entry " + entryName, e);
+            LOG.warn("Ignoring unexpected exception while parsing summary entry {}", entryName, e);
         }
     }
 
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/ner/NamedEntityParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/ner/NamedEntityParser.java
index 926edb2..3264938 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/ner/NamedEntityParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/ner/NamedEntityParser.java
@@ -57,7 +57,6 @@ import java.util.Set;
  *
  */
 public class NamedEntityParser extends AbstractParser {
-
     public static final Logger LOG = LoggerFactory.getLogger(NamedEntityParser.class);
     public static final Set<MediaType> MEDIA_TYPES = new HashSet<>();
     public static final String MD_KEY_PREFIX = "NER_";
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java b/tika-parsers/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
index 5e32681..85935e3 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/ner/mitie/MITIENERecogniser.java
@@ -40,7 +40,6 @@ import java.util.ArrayList;
  *
  */
 public class MITIENERecogniser implements NERecogniser {
-
     private static final Logger LOG = LoggerFactory.getLogger(MITIENERecogniser.class);
 
     public static final String MODEL_PROP_NAME = "ner.mitie.model";
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
index cbbbcf2..5f9134f 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/ocr/TesseractOCRParser.java
@@ -52,7 +52,6 @@ import org.apache.commons.exec.DefaultExecutor;
 import org.apache.commons.exec.PumpStreamHandler;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.io.TemporaryResources;
 import org.apache.tika.io.TikaInputStream;
@@ -69,6 +68,8 @@ import org.apache.tika.parser.image.TiffParser;
 import org.apache.tika.parser.jpeg.JpegParser;
 import org.apache.tika.sax.OfflineContentHandler;
 import org.apache.tika.sax.XHTMLContentHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.Attributes;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
@@ -89,6 +90,8 @@ import org.xml.sax.helpers.DefaultHandler;
  *
  */
 public class TesseractOCRParser extends AbstractParser {
+    private static final Logger LOG = LoggerFactory.getLogger(TesseractOCRParser.class);
+
     private static final long serialVersionUID = -8167538283213097265L;
     private static final TesseractOCRConfig DEFAULT_CONFIG = new TesseractOCRConfig();
     private static final Set<MediaType> SUPPORTED_TYPES = Collections.unmodifiableSet(
@@ -521,8 +524,7 @@ public class TesseractOCRParser extends AbstractParser {
                     IOUtils.closeQuietly(stream);
                 }
 
-                String msg = out.toString();
-                LogFactory.getLog(TesseractOCRParser.class).debug(msg);
+                LOG.debug("{}", out);
             }
         }.start();
     }
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java b/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
index eb81587..29be16b 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/pot/PooledTimeSeriesParser.java
@@ -31,7 +31,6 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.logging.Logger;
 
 import org.apache.commons.exec.CommandLine;
 import org.apache.commons.exec.DefaultExecutor;
@@ -51,6 +50,8 @@ import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.external.ExternalParser;
 import org.apache.tika.parser.mp4.MP4Parser;
 import org.apache.tika.sax.XHTMLContentHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.AttributesImpl;
@@ -77,7 +78,7 @@ public class PooledTimeSeriesParser extends AbstractParser {
     ;
     // TODO: Add all supported video types
 
-    private static final Logger LOG = Logger.getLogger(PooledTimeSeriesParser.class.getName());
+    private static final Logger LOG = LoggerFactory.getLogger(PooledTimeSeriesParser.class);
 
     /**
      * Returns the set of media types supported by this parser when used with the
@@ -118,8 +119,7 @@ public class PooledTimeSeriesParser extends AbstractParser {
             SAXException, TikaException {
 
         if (!isAvailable) {
-            LOG.warning(
-                    "PooledTimeSeries not installed!");
+            LOG.warn("PooledTimeSeries not installed!");
             return;
         }
 
@@ -177,7 +177,7 @@ public class PooledTimeSeriesParser extends AbstractParser {
         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
         cmdLine.addArgument("-f");
         cmdLine.addArgument(input.getAbsolutePath());
-        LOG.fine("Executing: " + cmdLine);
+        LOG.trace("Executing: {}", cmdLine);
         DefaultExecutor exec = new DefaultExecutor();
         exec.setExitValue(0);
         ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
index 0bf9731..aaf16fc 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/QPWTextExtractor.java
@@ -21,8 +21,7 @@ import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import com.google.common.base.Strings;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.tika.exception.TikaException;
@@ -32,6 +31,8 @@ import org.apache.tika.metadata.Office;
 import org.apache.tika.metadata.QuattroPro;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.sax.XHTMLContentHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
 /**
@@ -40,10 +41,8 @@ import org.xml.sax.SAXException;
  * @author Pascal Essiembre
  */
 class QPWTextExtractor {
+    private static final Logger LOG = LoggerFactory.getLogger(QPWTextExtractor.class);
 
-    private static final Logger LOG = 
-            LogManager.getLogger(QPWTextExtractor.class);
-    
     private static final String OLE_DOCUMENT_NAME = "NativeContent_MAIN";
 
     private enum Extractor{
@@ -122,9 +121,7 @@ class QPWTextExtractor {
         }},
         // Use to print out a chunk
         DEBUG { @Override public void extract(Context ctx) throws IOException {
-            LOG.error("REC ("
-                    + Integer.toHexString(ctx.type) + "/" + ctx.bodyLength 
-                    + "):" + ctx.in.readWPString(ctx.bodyLength));
+            LOG.error("REC ({}/{}):{}", Integer.toHexString(ctx.type), ctx.bodyLength, ctx.in.readWPString(ctx.bodyLength));
         }};
         public abstract void extract(Context ctx) 
                 throws IOException, SAXException;
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP5Charsets.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP5Charsets.java
index 6db8afa..af96167 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP5Charsets.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP5Charsets.java
@@ -16,8 +16,8 @@
  */
 package org.apache.tika.parser.wordperfect;
 
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * WordPerfect 5.x constant values used for mapping WordPerfect charsets to
@@ -25,8 +25,7 @@ import org.apache.log4j.Logger;
  * @author Pascal Essiembre
  */
 final class WP5Charsets {
-
-    private static final Logger LOG = LogManager.getLogger(WP5Charsets.class);
+    private static final Logger LOG = LoggerFactory.getLogger(WP5Charsets.class);
 
     /**
      * Extended character sets used when fixed-length multi-byte functions
@@ -192,11 +191,10 @@ final class WP5Charsets {
 
     public static void append(StringBuilder out, int charset, int charval) {
         if (charset >= WP5Charsets.EXTENDED_CHARSETS.length) {
-            LOG.debug("Unsupported WordPerfect 5.x charset: " + charset);
+            LOG.debug("Unsupported WordPerfect 5.x charset: {}", charset);
             out.append(' ');
         } else if (charval >= WP5Charsets.EXTENDED_CHARSETS[charset].length) {
-            LOG.debug("Unsupported WordPerfect 5.x charset (" + charset 
-                    + ") character value: " + charval);
+            LOG.debug("Unsupported WordPerfect 5.x charset ({}) character value: {}", charset, charval);
             out.append(' ');
         } else {
             out.append(WP5Charsets.EXTENDED_CHARSETS[charset][charval]);
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6Charsets.java b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6Charsets.java
index 8c62983..f0a0ac0 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6Charsets.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/wordperfect/WP6Charsets.java
@@ -16,8 +16,8 @@
  */
 package org.apache.tika.parser.wordperfect;
 
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * WordPerfect 6+ constant values used for mapping WordPerfect charsets to
@@ -25,8 +25,7 @@ import org.apache.log4j.Logger;
  * @author Pascal Essiembre
  */
 final class WP6Charsets {
-
-    private static final Logger LOG = LogManager.getLogger(WP6Charsets.class);
+    private static final Logger LOG = LoggerFactory.getLogger(WP6Charsets.class);
 
     public static final char[] DEFAULT_EXTENDED_INTL_CHARS = new char[] {
         '\0',     '\u00E5', '\u00C5', '\u00E6', '\u00C6',
@@ -434,11 +433,10 @@ final class WP6Charsets {
 
     public static void append(StringBuilder out, int charset, int charval) {
         if (charset >= WP6Charsets.EXTENDED_CHARSETS.length) {
-            LOG.debug("Unsupported WordPerfect 6+ charset: " + charset);
+            LOG.debug("Unsupported WordPerfect 6+ charset: {}", charset);
             out.append(' ');
         } else if (charval >= WP6Charsets.EXTENDED_CHARSETS[charset].length) {
-            LOG.debug("Unsupported WordPerfect 6+ charset (" + charset 
-                    + ") character value: " + charval);
+            LOG.debug("Unsupported WordPerfect 6+ charset ({}) character value: {}", charset, charval);
             out.append(' ');
         } else {
             out.append(WP6Charsets.EXTENDED_CHARSETS[charset][charval]);
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/xml/ElementMetadataHandler.java b/tika-parsers/src/main/java/org/apache/tika/parser/xml/ElementMetadataHandler.java
index d5bfb1c..39740f1 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/xml/ElementMetadataHandler.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/xml/ElementMetadataHandler.java
@@ -18,10 +18,10 @@ package org.apache.tika.parser.xml;
 
 import java.util.Arrays;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.Property;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.Attributes;
 
 /**
@@ -31,11 +31,7 @@ import org.xml.sax.Attributes;
  * @since Apache Tika 0.10
  */
 public class ElementMetadataHandler extends AbstractMetadataHandler {
-    /**
-     * Logger for this class
-     */
-    private static final Log logger = LogFactory
-            .getLog(ElementMetadataHandler.class);
+    private static final Logger LOG = LoggerFactory.getLogger(ElementMetadataHandler.class);
 
     private static final String LOCAL_NAME_RDF_BAG = "Bag";
     private static final String LOCAL_NAME_RDF_LI = "li";
@@ -88,9 +84,7 @@ public class ElementMetadataHandler extends AbstractMetadataHandler {
         this.name = name;
         this.allowDuplicateValues = false;
         this.allowEmptyValues = false;
-        if (logger.isTraceEnabled()) {
-            logger.trace("created simple handler for " + this.name);
-        }
+        LOG.trace("created simple handler for {}", this.name);
     }
 
     /**
@@ -113,9 +107,7 @@ public class ElementMetadataHandler extends AbstractMetadataHandler {
         this.name = name;
         this.allowDuplicateValues = allowDuplicateValues;
         this.allowEmptyValues = allowEmptyValues;
-        if (logger.isTraceEnabled()) {
-                logger.trace("created simple handler for " + this.name);
-        }
+        LOG.trace("created simple handler for {}", this.name);
     }
 
     /**
@@ -136,9 +128,7 @@ public class ElementMetadataHandler extends AbstractMetadataHandler {
         this.name = targetProperty.getName();
         this.allowDuplicateValues = false;
         this.allowEmptyValues = false;
-        if (logger.isTraceEnabled()) {
-            logger.trace("created property handler for " + this.name);
-        }
+        LOG.trace("created property handler for {}", this.name);
     }
 
     /**
@@ -162,9 +152,7 @@ public class ElementMetadataHandler extends AbstractMetadataHandler {
         this.name = targetProperty.getName();
         this.allowDuplicateValues = allowDuplicateValues;
         this.allowEmptyValues = allowEmptyValues;
-        if (logger.isTraceEnabled()) {
-                logger.trace("created property handler for " + this.name);
-        }
+        LOG.trace("created property handler for {}", this.name);
     }
 
     protected boolean isMatchingParentElement(String uri, String localName) {
@@ -235,9 +223,7 @@ public class ElementMetadataHandler extends AbstractMetadataHandler {
 
     @Override
     protected void addMetadata(String value) {
-        if (logger.isTraceEnabled()) {
-            logger.trace("adding " + name + "=" + value);
-        }
+        LOG.trace("adding {}={}", name, value);
         if (targetProperty != null && targetProperty.isMultiValuePermitted()) {
             if ((value != null && value.length() > 0) || allowEmptyValues) {
                 if (value == null || value.length() == 0 && allowEmptyValues) {
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
index 94d9a27..1dc4711 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/ner/nltk/NLTKNERecogniserTest.java
@@ -16,16 +16,13 @@
  */
 package org.apache.tika.parser.ner.nltk;
 
-import org.apache.commons.logging.Log;
 import org.apache.tika.Tika;
 import org.apache.tika.config.TikaConfig;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ner.NamedEntityParser;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.ByteArrayInputStream;
-import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.HashSet;
diff --git a/tika-server/pom.xml b/tika-server/pom.xml
index 8ca88e2..f230bfd 100644
--- a/tika-server/pom.xml
+++ b/tika-server/pom.xml
@@ -117,6 +117,21 @@
       <artifactId>cxf-rt-rs-client</artifactId>
       <version>${cxf.version}</version>
     </dependency>
+
+    <!-- logging -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>tika-core</artifactId>
@@ -135,11 +150,6 @@
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-jcl</artifactId>
-      <version>1.6.1</version>
-    </dependency>
   </dependencies>
 
   <build>
diff --git a/tika-server/src/main/java/org/apache/tika/server/TikaLoggingFilter.java b/tika-server/src/main/java/org/apache/tika/server/TikaLoggingFilter.java
index a2c1f67..266818e 100644
--- a/tika-server/src/main/java/org/apache/tika/server/TikaLoggingFilter.java
+++ b/tika-server/src/main/java/org/apache/tika/server/TikaLoggingFilter.java
@@ -17,6 +17,9 @@
 
 package org.apache.tika.server;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import javax.ws.rs.container.ContainerRequestContext;
 import javax.ws.rs.container.ContainerRequestFilter;
 import javax.ws.rs.container.PreMatching;
@@ -24,13 +27,11 @@ import javax.ws.rs.ext.Provider;
 
 import java.io.IOException;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
 @Provider
 @PreMatching
 public class TikaLoggingFilter implements ContainerRequestFilter {
-    private static final Log logger = LogFactory.getLog(TikaLoggingFilter.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TikaLoggingFilter.class);
+
     private boolean infoLevel;
 
     public TikaLoggingFilter(boolean infoLevel) {
@@ -40,12 +41,10 @@ public class TikaLoggingFilter implements ContainerRequestFilter {
     @Override
     public void filter(ContainerRequestContext requestContext) throws IOException {
         String requestUri = requestContext.getUriInfo().getRequestUri().toString();
-        String logMessage = "Request URI: " + requestUri;
         if (infoLevel) {
-            logger.info(logMessage);
+            LOG.info("Request URI: {}", requestUri);
         } else {
-            logger.debug(logMessage);
+            LOG.debug("Request URI: {}", requestUri);
         }
     }
-
 }
diff --git a/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java b/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
index 08b902a..5397d04 100644
--- a/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
+++ b/tika-server/src/main/java/org/apache/tika/server/TikaServerCli.java
@@ -28,8 +28,6 @@ import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.GnuParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.binding.BindingFactoryManager;
 import org.apache.cxf.jaxrs.JAXRSBindingFactory;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
@@ -59,14 +57,15 @@ import org.apache.tika.server.writer.TarWriter;
 import org.apache.tika.server.writer.TextMessageBodyWriter;
 import org.apache.tika.server.writer.XMPMessageBodyWriter;
 import org.apache.tika.server.writer.ZipWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class TikaServerCli {
     public static final int DEFAULT_PORT = 9998;
     private static final int DEFAULT_DIGEST_MARK_LIMIT = 20*1024*1024;
     public static final String DEFAULT_HOST = "localhost";
-    public static final Set<String> LOG_LEVELS =
-            new HashSet<String>(Arrays.asList("debug", "info"));
-    private static final Log logger = LogFactory.getLog(TikaServerCli.class);
+    public static final Set<String> LOG_LEVELS = new HashSet<>(Arrays.asList("debug", "info"));
+    private static final Logger LOG = LoggerFactory.getLogger(TikaServerCli.class);
 
     private static final String FILE_URL_WARNING =
             "WARNING: You have chosen to run tika-server with fileUrl enabled.\n"+
@@ -93,8 +92,7 @@ public class TikaServerCli {
     }
 
     public static void main(String[] args) {
-
-        logger.info("Starting " + new Tika().toString() + " server");
+        LOG.info("Starting {} server", new Tika());
 
         try {
             Options options = getOptions();
@@ -135,7 +133,7 @@ public class TikaServerCli {
                     boolean isInfoLevel = "info".equals(logLevel);
                     logFilter = new TikaLoggingFilter(isInfoLevel);
                 } else {
-                    logger.info("Unsupported request URI log level: " + logLevel);
+                    LOG.info("Unsupported request URI log level: {}", logLevel);
                 }
             }
 
@@ -152,12 +150,11 @@ public class TikaServerCli {
             TikaConfig tika;
             
             if (line.hasOption("config")){
-              String configFilePath = line.getOptionValue("config");
-	      logger.info("Using custom config: "+configFilePath);
-              tika = new TikaConfig(configFilePath);
-            }
-            else{
-              tika = TikaConfig.getDefaultConfig();
+                String configFilePath = line.getOptionValue("config");
+                LOG.info("Using custom config: {}", configFilePath);
+                tika = new TikaConfig(configFilePath);
+            } else{
+                tika = TikaConfig.getDefaultConfig();
             }
 
             DigestingParser.Digester digester = null;
@@ -226,17 +223,18 @@ public class TikaServerCli {
             }
             sf.setProviders(providers);
 
-            sf.setAddress("http://" + host + ":" + port + "/");
-            BindingFactoryManager manager = sf.getBus().getExtension(
-                    BindingFactoryManager.class);
+
+            String url = "http://" + host + ":" + port + "/";
+            sf.setAddress(url);
+            BindingFactoryManager manager = sf.getBus().getExtension(BindingFactoryManager.class);
             JAXRSBindingFactory factory = new JAXRSBindingFactory();
             factory.setBus(sf.getBus());
             manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID,
                     factory);
             sf.create();
-            logger.info("Started");
+            LOG.info("Started Apache Tika server at {}", url);
         } catch (Exception ex) {
-            logger.fatal("Can't start", ex);
+            LOG.error("Can't start", ex);
             System.exit(-1);
         }
     }
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/DetectorResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/DetectorResource.java
index 9f19ad6..8d32fa0 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/DetectorResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/DetectorResource.java
@@ -27,17 +27,15 @@ import javax.ws.rs.core.UriInfo;
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tika.io.TikaInputStream;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.mime.MediaType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Path("/detect")
 public class DetectorResource {
-
-    private static final Log logger = LogFactory.getLog(DetectorResource.class
-            .getName());
+    private static final Logger LOG = LoggerFactory.getLogger(DetectorResource.class);
 
     @PUT
     @Path("stream")
@@ -49,16 +47,13 @@ public class DetectorResource {
         TikaInputStream tis = TikaInputStream.get(TikaResource.getInputStream(is, httpHeaders));
         String filename = TikaResource.detectFilename(httpHeaders
                 .getRequestHeaders());
-        logger.info("Detecting media type for Filename: " + filename);
+        LOG.info("Detecting media type for Filename: {}", filename);
         met.add(Metadata.RESOURCE_NAME_KEY, filename);
         try {
             return TikaResource.getConfig().getDetector().detect(tis, met).toString();
         } catch (IOException e) {
-            logger.warn("Unable to detect MIME type for file. Reason: "
-                    + e.getMessage());
-            e.printStackTrace();
+            LOG.warn("Unable to detect MIME type for file. Reason: {}", e.getMessage(), e);
             return MediaType.OCTET_STREAM.toString();
         }
     }
-
 }
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/LanguageResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/LanguageResource.java
index 4eaab91..7269ebb 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/LanguageResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/LanguageResource.java
@@ -29,16 +29,14 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tika.langdetect.OptimaizeLangDetector;
 import org.apache.tika.language.detect.LanguageResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Path("/language")
 public class LanguageResource {
-
-	private static final Log logger = LogFactory.getLog(LanguageResource.class
-			.getName());
+	private static final Logger LOG = LoggerFactory.getLogger(LanguageResource.class);
 
 	@PUT
 	@POST
@@ -49,8 +47,7 @@ public class LanguageResource {
 		String fileTxt = IOUtils.toString(is, UTF_8);
 		LanguageResult language = new OptimaizeLangDetector().loadModels().detect(fileTxt);
 		String detectedLang = language.getLanguage();
-		logger.info("Detecting language for incoming resource: ["
-				+ detectedLang + "]");
+		LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
 		return detectedLang;
 	}
 
@@ -62,8 +59,7 @@ public class LanguageResource {
 	public String detect(final String string) throws IOException {
 		LanguageResult language = new OptimaizeLangDetector().loadModels().detect(string);
 		String detectedLang = language.getLanguage();
-		logger.info("Detecting language for incoming resource: ["
-				+ detectedLang + "]");
+		LOG.info("Detecting language for incoming resource: [{}]", detectedLang);
 		return detectedLang;
 	}
 
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/MetadataResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/MetadataResource.java
index e5e5a1f..31b8716 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/MetadataResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/MetadataResource.java
@@ -31,18 +31,18 @@ import javax.ws.rs.core.UriInfo;
 import java.io.IOException;
 import java.io.InputStream;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.tika.language.detect.LanguageHandler;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.parser.ParseContext;
 import org.apache.tika.parser.Parser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 @Path("/meta")
 public class MetadataResource {
-    private static final Log logger = LogFactory.getLog(MetadataResource.class);
+    private static final Logger LOG = LoggerFactory.getLogger(MetadataResource.class);
 
     @POST
     @Consumes("multipart/form-data")
@@ -98,7 +98,7 @@ public class MetadataResource {
             // if we did not see the field
             defaultErrorResponse = Response.Status.NOT_FOUND;
         } catch (Exception e) {
-            logger.info("Failed to process field " + field, e);
+            LOG.info("Failed to process field {}", field, e);
         }
 
         if (metadata == null || metadata.get(field) == null) {
@@ -122,8 +122,8 @@ public class MetadataResource {
         TikaResource.fillMetadata(parser, metadata, context, httpHeaders);
         //no need to pass parser for embedded document parsing
         TikaResource.fillParseContext(context, httpHeaders, null);
-        TikaResource.logRequest(logger, info, metadata);
-        TikaResource.parse(parser, logger, info.getPath(), is,
+        TikaResource.logRequest(LOG, info, metadata);
+        TikaResource.parse(parser, LOG, info.getPath(), is,
                 new LanguageHandler() {
                     public void endDocument() {
                         metadata.set("language", getLanguage().getLanguage());
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
index b967f8b..24e3f91 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
@@ -30,8 +30,6 @@ import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 import java.io.InputStream;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.tika.language.detect.LanguageHandler;
 import org.apache.tika.metadata.Metadata;
@@ -40,6 +38,8 @@ import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.RecursiveParserWrapper;
 import org.apache.tika.sax.BasicContentHandlerFactory;
 import org.apache.tika.server.MetadataList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Path("/rmeta")
 public class RecursiveMetadataResource {
@@ -47,7 +47,7 @@ public class RecursiveMetadataResource {
     private static final String HANDLER_TYPE_PARAM = "handler";
     private static final BasicContentHandlerFactory.HANDLER_TYPE DEFAULT_HANDLER_TYPE =
             BasicContentHandlerFactory.HANDLER_TYPE.XML;
-    private static final Log logger = LogFactory.getLog(RecursiveMetadataResource.class);
+    private static final Logger LOG = LoggerFactory.getLogger(RecursiveMetadataResource.class);
 
     /**
      * Returns an InputStream that can be deserialized as a list of
@@ -135,8 +135,8 @@ public class RecursiveMetadataResource {
 		TikaResource.fillMetadata(parser, metadata, context, httpHeaders);
 		// no need to add parser to parse recursively
 		TikaResource.fillParseContext(context, httpHeaders, null);
-		TikaResource.logRequest(logger, info, metadata);
-		TikaResource.parse(wrapper, logger, info.getPath(), is,
+		TikaResource.logRequest(LOG, info, metadata);
+		TikaResource.parse(wrapper, LOG, info.getPath(), is,
 				new LanguageHandler() {
 					public void endDocument() {
 						metadata.set("language", getLanguage().getLanguage());
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
index 96d44ff..98287a1 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
@@ -51,8 +51,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.tika.Tika;
@@ -77,6 +75,8 @@ import org.apache.tika.sax.ExpandedTitleContentHandler;
 import org.apache.tika.sax.RichTextContentHandler;
 import org.apache.tika.server.InputStreamFactory;
 import org.apache.tika.server.TikaServerParseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -86,8 +86,7 @@ public class TikaResource {
     public static final String X_TIKA_OCR_HEADER_PREFIX = "X-Tika-OCR";
     public static final String X_TIKA_PDF_HEADER_PREFIX = "X-Tika-PDF";
 
-
-    private static final Log logger = LogFactory.getLog(TikaResource.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TikaResource.class);
 
     private static TikaConfig tikaConfig;
     private static DigestingParser.Digester digester = null;
@@ -147,12 +146,7 @@ public class TikaResource {
                 }
             } catch (ParseException e) {
                 // not a valid content-disposition field
-            	e.printStackTrace();
-            	logger.warn(String.format(
-                        Locale.ROOT,
-                        "Parse exception %s determining content disposition",
-                        e.getMessage()
-                ), e);
+                LOG.warn("Parse exception {} determining content disposition", e.getMessage(), e);
             }
         }
 
@@ -308,43 +302,26 @@ public class TikaResource {
 
     }
 
-    public static void parse(Parser parser, Log logger, String path, InputStream inputStream,
+    public static void parse(Parser parser, Logger logger, String path, InputStream inputStream,
                              ContentHandler handler, Metadata metadata, ParseContext parseContext) throws IOException {
         try (TikaInputStream tikaInputStream = TikaInputStream.get(inputStream)) {
             parser.parse(tikaInputStream, handler, metadata, parseContext);
         } catch (SAXException e) {
             throw new TikaServerParseException(e);
         } catch (EncryptedDocumentException e) {
-            logger.warn(String.format(
-                    Locale.ROOT,
-                    "%s: Encrypted document",
-                    path
-            ), e);
+            logger.warn("{}: Encrypted document", path, e);
             throw new TikaServerParseException(e);
         } catch (Exception e) {
-            logger.warn(String.format(
-                    Locale.ROOT,
-                    "%s: Text extraction failed",
-                    path
-            ), e);
+            logger.warn("{}: Text extraction failed", path, e);
             throw new TikaServerParseException(e);
         }
     }
 
-    public static void logRequest(Log logger, UriInfo info, Metadata metadata) {
+    public static void logRequest(Logger logger, UriInfo info, Metadata metadata) {
         if (metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE) == null) {
-            logger.info(String.format(
-                    Locale.ROOT,
-                    "%s (autodetecting type)",
-                    info.getPath()
-            ));
+            logger.info("{} (autodetecting type)", info.getPath());
         } else {
-            logger.info(String.format(
-                    Locale.ROOT,
-                    "%s (%s)",
-                    info.getPath(),
-                    metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE)
-            ));
+            logger.info("{} ({})", info.getPath(), metadata.get(org.apache.tika.metadata.HttpHeaders.CONTENT_TYPE));
         }
     }
 
@@ -377,7 +354,7 @@ public class TikaResource {
         fillMetadata(parser, metadata, context, httpHeaders);
         fillParseContext(context, httpHeaders, parser);
 
-        logRequest(logger, info, metadata);
+        logRequest(LOG, info, metadata);
 
         return new StreamingOutput() {
             public void write(OutputStream outputStream) throws IOException, WebApplicationException {
@@ -386,7 +363,7 @@ public class TikaResource {
                 BodyContentHandler body = new BodyContentHandler(new RichTextContentHandler(writer));
 
                 try (InputStream inputStream = is) {
-                    parse(parser, logger, info.getPath(), inputStream, body, metadata, context);
+                    parse(parser, LOG, info.getPath(), inputStream, body, metadata, context);
                 }
             }
         };
@@ -432,7 +409,7 @@ public class TikaResource {
         fillParseContext(context, httpHeaders, parser);
 
 
-        logRequest(logger, info, metadata);
+        logRequest(LOG, info, metadata);
 
         return new StreamingOutput() {
             public void write(OutputStream outputStream)
@@ -452,7 +429,7 @@ public class TikaResource {
                     throw new WebApplicationException(e);
                 }
 
-                parse(parser, logger, info.getPath(), is, content, metadata, context);
+                parse(parser, LOG, info.getPath(), is, content, metadata, context);
             }
         };
     }
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
index fb8df65..8dad762 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/TranslateResource.java
@@ -31,24 +31,22 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.tika.config.LoadErrorHandler;
 import org.apache.tika.config.ServiceLoader;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.langdetect.OptimaizeLangDetector;
 import org.apache.tika.language.detect.LanguageResult;
 import org.apache.tika.language.translate.Translator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Path("/translate")
 public class TranslateResource {
-
 	private Translator defaultTranslator;
 
 	private ServiceLoader loader;
 
-	private static final Log logger = LogFactory.getLog(TranslateResource.class
-			.getName());
+	private static final Logger LOG = LoggerFactory.getLogger(TranslateResource.class);
 
 	public TranslateResource() {
 		this.loader = new ServiceLoader(ServiceLoader.class.getClassLoader(),
@@ -84,18 +82,17 @@ public class TranslateResource {
 		}
 		
 		String sLang = language.getLanguage();
-		logger.info("LanguageIdentifier: detected source lang: [" + sLang + "]");
+		LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
 		return doTranslate(content, translator, sLang, dLang);
 	}
 
 	private String doTranslate(String content, String translator, String sLang,
 			String dLang) throws TikaException, IOException {
-		logger.info("Using translator: [" + translator + "]: src: [" + sLang
-				+ "]: dest: [" + dLang + "]");
+		LOG.info("Using translator: [{}]: src: [{}]: dest: [{}]", translator, sLang, dLang);
 		Translator translate = byClassName(translator);
 		if (translate == null) {
 			translate = this.defaultTranslator;
-			logger.info("Using default translator");
+			LOG.info("Using default translator");
 		}
 
 		return translate.translate(content, sLang, dLang);
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
index 383af98..2292bef 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/UnpackerResource.java
@@ -40,8 +40,6 @@ import java.util.Map;
 
 import au.com.bytecode.opencsv.CSVWriter;
 import org.apache.commons.lang.mutable.MutableInt;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.poi.poifs.filesystem.DirectoryEntry;
 import org.apache.poi.poifs.filesystem.DocumentEntry;
 import org.apache.poi.poifs.filesystem.DocumentInputStream;
@@ -61,6 +59,8 @@ import org.apache.tika.parser.Parser;
 import org.apache.tika.parser.microsoft.OfficeParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.apache.tika.sax.RichTextContentHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.DefaultHandler;
@@ -68,9 +68,10 @@ import org.xml.sax.helpers.DefaultHandler;
 @Path("/unpack")
 public class UnpackerResource {
     public static final String TEXT_FILENAME = "__TEXT__";
-    private static final Log logger = LogFactory.getLog(UnpackerResource.class);
     private static final String META_FILENAME = "__METADATA__";
 
+    private static final Logger LOG = LoggerFactory.getLogger(UnpackerResource.class);
+
     public static void metadataToCsv(Metadata metadata, OutputStream outputStream) throws IOException {
         CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream, UTF_8));
 
@@ -123,7 +124,7 @@ public class UnpackerResource {
         }
 
         TikaResource.fillMetadata(parser, metadata, pc, httpHeaders.getRequestHeaders());
-        TikaResource.logRequest(logger, info, metadata);
+        TikaResource.logRequest(LOG, info, metadata);
 
         ContentHandler ch;
         ByteArrayOutputStream text = new ByteArrayOutputStream();
@@ -138,7 +139,7 @@ public class UnpackerResource {
         MutableInt count = new MutableInt();
 
         pc.set(EmbeddedDocumentExtractor.class, new MyEmbeddedDocumentExtractor(count, files));
-        TikaResource.parse(parser, logger, info.getPath(), is, ch, metadata, pc);
+        TikaResource.parse(parser, LOG, info.getPath(), is, ch, metadata, pc);
 
         if (count.intValue() == 0 && !saveAll) {
             throw new WebApplicationException(Response.Status.NO_CONTENT);
@@ -189,7 +190,7 @@ public class UnpackerResource {
                         name += ext;
                     }
                 } catch (MimeTypeException e) {
-                    logger.warn("Unexpected MimeTypeException", e);
+                    LOG.warn("Unexpected MimeTypeException", e);
                 }
             }
 
@@ -212,7 +213,7 @@ public class UnpackerResource {
                             data = ole.getDataBuffer();
                         }
                     } catch (Ole10NativeException ex) {
-                        logger.warn("Skipping invalid part", ex);
+                        LOG.warn("Skipping invalid part", ex);
                     }
                 } else {
                     name += '.' + type.getExtension();
diff --git a/tika-server/src/main/resources/commons-logging.properties b/tika-server/src/main/resources/log4j.properties
similarity index 61%
rename from tika-server/src/main/resources/commons-logging.properties
rename to tika-server/src/main/resources/log4j.properties
index 07d7dc0..7d3b372 100644
--- a/tika-server/src/main/resources/commons-logging.properties
+++ b/tika-server/src/main/resources/log4j.properties
@@ -1,4 +1,3 @@
-#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
@@ -13,18 +12,13 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
 
-handlers = java.util.logging.ConsoleHandler
+#info,debug, error,fatal ...
+log4j.rootLogger=info,stderr
 
-# Set the default logging level for the root logger
-.level = ALL
-    
-# Set the default logging level for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.level = ALL
-        
-# Set the default formatter for new ConsoleHandler instances
-java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-#org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
+#console
+log4j.appender.stderr=org.apache.log4j.ConsoleAppender
+log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
+log4j.appender.stderr.Target=System.err
 
-org.apache.cxf.level = INFO
+log4j.appender.stderr.layout.ConversionPattern= %-5p %m%n

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.