Bump jul-to-slf4j and jcl-over-slf4j to version 2.0.16
Motivated primarily by the regression in #6405 and https://github.com/ome/openmicroscopy/issues/6405#issuecomment-2283339623, this bumps the version of jul-to-slf4j and jcl-over-slf4j to the latest release of the 2.0.x series, currently 2.0.16. These should be compatible with the version of slf4j-api which is now shipped in OMERO.server.
As an additional feature, the latest version of jul-to-slf4j now depends on reload4j (rather than log4j) for testing purposes. This does not resolve the dependency problems raised in #6405 but it further reduces the chances of log4j.jar unexpectedly creeping into the binaries.
Testing should confirm that logging statements using either JCL (Apache Commons Logging, formerly Jakarta Commons Logging) or JUL (java.util.logging) as still handled via slf4 and ultimately logback.
Unfortunately the biggest usage of these logging frameworks will be in third-party dependencies since the majority of the OMERO code base has been converted to using slf4j and logback over a decade ago - https://github.com/ome/openmicroscopy/pull/1006.
Within OMERO, there are still a few classes making internal use of either JCL or JUL:
- the JVM checks in ome.service.util.JvmSettingsCheck are using JCL -L85. These should be easy to test as they are logged in
Blitz-0.logat the server startup ome.util.Utilsuses JUL in its closeQuietly API,Utils.closeQuietlyis used in a few components to close input streams however the logging message will only appear ifclose()throws an exception so I can't think of a good scenario off-hand- omero.util.Resources uses JUL internally when adding/removing/cleaning managed entries. Here again most logging statement are at the FINEST (aka TRACE) level and only unexpected behaviors are logged at a WARNING level. This class is used in
omero.clientand the import code base primarily when calling keepAlive - https://github.com/search?q=org%3Aome+omero.util.Resources+language%3AJava&type=code&l=Java
As a follow-up all the classes above could probably be updated to use the slf4j API and get rid of JCL and JUL at least in the OME codebase. I'll hold on opening these until this has been tested as it could make the testing more complicated.