Hi,

I agree with Piotr, except 3 there is no real point in any change IMHO so
think it is 3 for maintenance only or noop without any downside.

Le dim. 11 févr. 2024 à 00:35, Piotr P. Karwasz <piotr.karw...@gmail.com> a
écrit :

> Hi Gary,
>
> On Sat, 10 Feb 2024 at 17:26, Gary Gregory <garydgreg...@gmail.com> wrote:
> > My main driver for the next version is to drop support and dependency
> > on the Log4j 1.x JARs file(s). I speak of JAR files here as opposed to
> > APIs, see below.
>
> Log4JLogger is disabled by default in version 1.3.0 (cf. [1]) and the
> dependency on `log4j:log4j` is optional, so it is a compile-only
> dependency.
>
> If any security expert complains that there is a mention of
> `log4j:log4j:1.2.17` in the POM file, I would suggest changing
> security expert. ;-)
>
> > I see several ways to drop Log4j 1.x JARs.
> > 1) Replace the dependency on Log4j 1.x with the Log4j 2 compatibility
> > JAR for 1.2: org.apache.logging.log4j:log4j-1.2-api
> >     This maintains BC and can become 1.4.0.
>
> It shouldn't really matter what JAR we use to compile Commons Logging.
> People will still use `log4j/reload4j` at runtime.
>
> > 2) A re-implementation of Log4JLogger where all methods call Log4j 2
> APIs.
> >     This maintains BC and can become 1.4.0.
> >     It looks like this is not possible in a straightforward manner
> > because we have Log4j 1 classes in the public API, specifically
> > org.apache.commons.logging.impl.Log4JLogger.Log4JLogger(Logger). It
> > might not be worth hacking around that if that's even possible.
>
> The dependency on `log4j-api` is also optional, so this will break
> user projects.
> If users are willing to upgrade to a more modern logging backend than
> Log4j 1.x, they can do it right now.
>
> Release 1.3.0 binds to Log4j API as first choice (followed by SLF4J
> and JUL), so we already short circuited many logging configurations
> that were using:
>
> 1. commons-logging -> log4j-over-slf4j -> slf4j-api,
> 2. commons-logging -> log4j-1.2-api -> log4j-api.
>
> > 3) A hard delete of org.apache.commons.logging.impl.Log4JLogger (the
> > class is deprecated in 1.3.0 FWIW).
> >     This breaks BC and requires a 2.0.0 with a package name and Maven
> > coordinate change.
> >     The package would change from org.apache.commons.logging to
> > org.apache.commons.logging2.
> >     The Maven coordinates would change from
> > commons-logging:commons-logging to org.apache.commons:commons-logging2
>
> +1 on removing the class. This seems the only solution, where we make
> a stand against using 20 years old logging frameworks. Users will
> still be able to use Log4j 1.x/Reload4J through the `slf4j-reload4j`
> bridge that Ceki still maintains.
>
> I wouldn't change the Maven coordinates/Java package though: Apache
> Commons Logging is a very primitive interface compared to the
> alternatives. I doubt anybody will recompile against the new package
> and legacy libraries will still be stuck at 1.3.0.
>
> If a user has to make changes in his code, he might as well migrate to
> Log4j API (which is a superset of JCL) or SLF4J (which does not allow
> to log objects, but is mostly "source compatible"). There are
> automatic recipes for both migrations[2].
>
> > 4) A gutting of Log4JLogger where all methods are no-ops.
> >      This maintains BC and can become 1.4.0.
>
> I wouldn't do that. Technically this is not a breaking change, but in
> practice it breaks user applications.
>
> Piotr
>
> [1]
> https://github.com/apache/commons-logging/blob/809f22417beeda262a631362d160ffbbfa34309d/src/main/java/org/apache/commons/logging/impl/LogFactoryImpl.java#L142-L153
> [2] https://docs.openrewrite.org/recipes/java/logging
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to