Logging framework incompatibility Logging framework incompatibility java java

Logging framework incompatibility


You are mixing the 1.5.6 version of the jcl bridge with the 1.6.0 version of the slf4j-api; this won't work because of a few changes in 1.6.0. Use the same versions for both, i.e. 1.6.1 (the latest). I use the jcl-over-slf4j bridge all the time and it works fine.


SLF4J 1.5.11 and 1.6.0 versions are not compatible (see compatibility report) because the argument list of org.slf4j.spi.LocationAwareLogger.log method has been changed (added Object[] p5):

SLF4J 1.5.11:

LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,                          String p4, Throwable p5 )

SLF4J 1.6.0:

LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,                          String p4, Object[] p5, Throwable p6 )

See compatibility reports for other SLF4J versions on this page.

You can generate such reports by the japi-compliance-checker tool.

enter image description here


Just to help those in a similar situation to myself...

This can be caused when a dependent library has accidentally bundled an old version of slf4j. In my case, it was tika-0.8. See https://issues.apache.org/jira/browse/TIKA-556

The workaround is exclude the component and then manually depends on the correct, or patched version.

EG.

<dependency>    <groupId>org.apache.tika</groupId>    <artifactId>tika-parsers</artifactId>    <version>0.8</version>    <exclusions>        <exclusion>            <!-- NOTE: Version 4.2 has bundled slf4j -->            <groupId>edu.ucar</groupId>            <artifactId>netcdf</artifactId>        </exclusion>    </exclusions></dependency><dependency>    <!-- Patched version 4.2-min does not bundle slf4j -->    <groupId>edu.ucar</groupId>    <artifactId>netcdf</artifactId>    <version>4.2-min</version></dependency>