Hi Mickael,

Nice catch!
I agree that we should mention the zookeeper log4j dependency things in the
KIP or upgrade/release notes.

Thank you.
Luke

On Fri, Jan 28, 2022 at 10:35 PM Mickael Maison <mickael.mai...@gmail.com>
wrote:

> Hi Dongjin,
>
> Before starting to review the PR, I was doing a bit of research of the
> topic and I noticed ZooKeeper actually depends on log4j1.
>
> In zookeeper-server, by default a few JMX beans are registered for
> log4j1. When starting ZooKeeper you get a log line like:
> INFO Log4j 1.2 jmx support found and enabled.
> (org.apache.zookeeper.jmx.ManagedUtil)
>
> See
> https://github.com/apache/zookeeper/blob/branch-3.6/zookeeper-server/src/main/java/org/apache/zookeeper/jmx/ManagedUtil.java
> In case, log4j1 can't be found, this feature is disabled. It can also
> be disabled using the "zookeeper.jmx.log4j.disable" system property.
> But otherwise, it's enabled by default.
>
> People depending on this feature can always run a proper ZooKeeper
> distribution, instead of the ZooKeeper release we bundle with Kafka,
> or even manually add the log4j1 jars to their PATH.
> So I don't think it's a problem but I think we probably want to
> mention it in the KIP or in the upgrade/release notes at least.
>
> Thanks,
> Mickael
>
> On Thu, Oct 22, 2020 at 4:27 AM Dongjin Lee <dong...@apache.org> wrote:
> >
> > Hi All,
> >
> > As KIP-653 is now accepted, I hope to start a discussion about its
> release
> > plan.
> >
> > As all of you know, this proposal has the possibility of a compatibility
> > break, for the changes between log4j and log4j2. To minimize the
> unexpected
> > consequences, I propose to provide a preview release.
> >
> > 1. Keep the current PR to the latest trunk, aiming for the next release
> > after 2.7.0.
> > 2. For 2.7.0, release a customized version with the log4j2 feature for
> > preview. The users who want to test this feature can download and use
> this
> > one instead of the official release.
> > 3. For 2.7.0 and 2.6.1, provide a patch for the log4j2 feature. The users
> > who want to test this feature with their customized Kafka variant can use
> > this one.[^1]
> >
> > For 2 and 3, I plan to release them on my apache FTP with documentation
> and
> > announce it in the dev and user mailing list.
> >
> > If you have any proposals or ideas, don't hesitate to give me a reply.
> >
> > Thanks,
> > Dongjin
> >
> > [^1]: CCed for in-house variant maintainers.
> >
> > On Wed, Sep 30, 2020 at 6:43 AM Dongjin Lee <dong...@apache.org> wrote:
> >
> > > Hi All,
> > >
> > > As you can see in the PR, I eliminated all compatibility breaks caused
> by
> > > the root logger name change between log4j and log4j2. (i.e., "root" →
> "")
> > > Plus, I rebased the PR onto the latest trunk, with migrating raft
> module
> > > into log4j2.
> > >
> > > Please have a look. And please note that now we have limited time only.
> > >
> > > Thanks,
> > > Dongjin
> > >
> > > On Tue, Sep 29, 2020 at 1:07 AM Dongjin Lee <dong...@apache.org>
> wrote:
> > >
> > >> > 3. ... For the same reason I call that a bug, I think the
> description
> > >> in the KIP is
> > >> incorrect.
> > >>
> > >> Agree, the description in the KIP is written before you open a PR (
> > >> https://github.com/apache/kafka/pull/9266) - As you remember, I am
> > >> participating the review. I think it is a bug and should be fixed.
> (And it
> > >> seems like it will be.)
> > >>
> > >> > In any case I think some careful testing to ensure compatibility
> would
> > >> be very beneficial.
> > >>
> > >> Yes, I am now adding some additional verifications to make sure. It is
> > >> almost done, and I will update the KIP as soon as I complete them.
> > >>
> > >> Don't hesitate to give me additional comments if it is necessary.
> > >>
> > >> Best,
> > >> Dongjin
> > >>
> > >> On Mon, Sep 28, 2020 at 8:03 PM Tom Bentley <tbent...@redhat.com>
> wrote:
> > >>
> > >>> Hi Dongjin,
> > >>>
> > >>> Sorry for the late reply.
> > >>>
> > >>> 1. I think translating the name "root" to "" would work fine.
> > >>>
> > >>> 2. The second bullet in the Connect section of the KIP seems to need
> some
> > >>> translation between null and OFF, similar to the name translation.
> > >>>
> > >>> 3. The third bullet seems to be about logger inheritance. As you
> know, I
> > >>> have an open PR (https://github.com/apache/kafka/pull/9266) to fix
> a bug
> > >>> where the broker/connect reports the root logger's level rather than
> > >>> respecting the actual (inherited) level of a logger in the
> hierarchy. For
> > >>> the same reason I call that a bug, I think the description in the
> KIP is
> > >>> incorrect. The behaviour change described would seem to be
> incompatible
> > >>> whether the PR was merged or not.
> > >>>
> > >>> I'm not an expert in log4j, but my understanding is as follows:
> > >>>
> > >>> * In original log4j, a logger and its configuration were both
> represented
> > >>> by a Logger instance. A Logger could be instantiated and configured
> > >>> according to the config file (or programmatically). If it was
> created by
> > >>> a
> > >>> call to the LogManager (e.g. in order to log something) its
> configuration
> > >>> would be inherited. This meant there was only one place to look for a
> > >>> loggers level: The Logger itself. This meant that getting or setting
> a
> > >>> logger's level was easy.
> > >>>
> > >>> * In log4j2 a LoggerConfig (the thing created by the config file) is
> a
> > >>> separate thing from the Logger (the thing on which you call warn(),
> > >>> debug()
> > >>> etc) itself and I think this makes it harder to provide compatibility
> > >>> with
> > >>> the log4j v1 behaviour for things like getting a logger's level,
> because
> > >>> AFAIK log4j2 doesn't provide a convenient API for doing so. Instead
> when
> > >>> finding a logger's level you have to look for both a LoggerConfig
> and a
> > >>> Logger, because the level could be set in either. This is all based
> on
> > >>> what
> > >>> I learned when I was looking at the log4j2 switch (before I knew you
> were
> > >>> already looking at it, if you recall). I have some code from then [1]
> > >>> which
> > >>> may be of use though it's in a bit of a rough state. In any case I
> think
> > >>> some careful testing to ensure compatibility would be very
> beneficial.
> > >>>
> > >>> Kind regards,
> > >>>
> > >>> Tom
> > >>>
> > >>> [1]:
> > >>>
> > >>>
> https://github.com/tombentley/kafka/blob/KAFKA-1368-log4j2/core/src/main/scala/kafka/utils/Log4j2Controller.scala
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> On Wed, Sep 23, 2020 at 1:50 PM Dongjin Lee <dong...@apache.org>
> wrote:
> > >>>
> > >>> > Hi Tom,
> > >>> >
> > >>> > Thanks for the detailed analysis. Recently, I was also thinking
> about
> > >>> API
> > >>> > compatibility. I initially thought that the difference between the
> root
> > >>> > logger name would break the compatibility (as the KIP states), it
> seems
> > >>> > like I found a workaround:
> > >>> >
> > >>> > 1. When the user requests arrive, regard the logger name 'root' as
> an
> > >>> empty
> > >>> > string. (i.e., translate the request into the log4j2 equivalent.)
> > >>> > 2. When generating the response, change the logger name '' into
> 'root'.
> > >>> > (i.e., translate the response into the log4j equivalent.)
> > >>> > 3. Remove (or make reverse) the workaround above when we make
> log4j2
> > >>> > default.
> > >>> >
> > >>> > In short, it seems like we can handle the API incompatibility
> > >>> introduced by
> > >>> > the root logger name change by adding a facade.
> > >>> >
> > >>> > How do you think?
> > >>> >
> > >>> > Thanks,
> > >>> > Dongjin
> > >>> >
> > >>> > On Wed, Sep 23, 2020 at 7:36 PM Tom Bentley <tbent...@redhat.com>
> > >>> wrote:
> > >>> >
> > >>> > > Hi Dongjin,
> > >>> > >
> > >>> > > I'd like to see this feature, but if I understand correctly, the
> KIP
> > >>> in
> > >>> > its
> > >>> > > current form breaks a couple of Kafka APIs. For Kafka Connect it
> says
> > >>> > "From
> > >>> > > log4j2, the name of the root logger becomes empty string from
> > >>> 'root'. It
> > >>> > > impacts Kafka connect's dynamic logging control feature. (And
> should
> > >>> be
> > >>> > > documented.)". This seems to imply that any tooling that a user
> might
> > >>> > have
> > >>> > > written about logging in Kafka Connect will break because the
> client
> > >>> and
> > >>> > > server don't have a shared understanding of how to identify the
> root
> > >>> > > logger. The same would be true for the DescribeConfigs,
> AlterConfigs
> > >>> and
> > >>> > > IncrementalAlterConfigs protocols using the BROKER_LOGGER
> resource
> > >>> type,
> > >>> > I
> > >>> > > think.
> > >>> > >
> > >>> > > Maybe that's OK if the behaviour was changing in a new major
> release
> > >>> of
> > >>> > > Kafka (e.g. 3.0), but I don't think it's allowed in Kafka 2.7
> given
> > >>> the
> > >>> > > project's compatibility requirements & semantic versioning.
> > >>> > >
> > >>> > > If these API compatibility issues are easily fixed I think it
> would
> > >>> be
> > >>> > > great to have this in 2.7, but if not it might be easier to
> target
> > >>> this
> > >>> > for
> > >>> > > Kafka 3.0. That would also allow you to change the logging config
> > >>> format
> > >>> > as
> > >>> > > suggested by Ismael.
> > >>> > >
> > >>> > > Many thanks,
> > >>> > >
> > >>> > > Tom
> > >>> > >
> > >>> > > On Tue, Sep 22, 2020 at 5:15 PM Dongjin Lee <dong...@apache.org>
> > >>> wrote:
> > >>> > >
> > >>> > > > Hi devs,
> > >>> > > >
> > >>> > > > I updated the KIP with the migration plan I discussed with
> Ismael.
> > >>> > > >
> > >>> > > > I think 2.7.0 is the perfect time for starting migration into
> > >>> log4j2.
> > >>> > If
> > >>> > > we
> > >>> > > > miss this opportunity, the migration would be much harder. So
> > >>> please
> > >>> > > have a
> > >>> > > > look at this proposal.
> > >>> > > >
> > >>> > > > I also opened a voting thread for this.
> > >>> > > >
> > >>> > > > Thanks,
> > >>> > > > Dongjin
> > >>> > > >
> > >>> > > > On Thu, Sep 17, 2020 at 2:29 AM Dongjin Lee <
> dong...@apache.org>
> > >>> > wrote:
> > >>> > > >
> > >>> > > > > Hi Ismael,
> > >>> > > > >
> > >>> > > > > > Have we considered switching to the log4j2 logging config
> > >>> format by
> > >>> > > > > default and providing a mechanism to use the old format?
> > >>> > > > >
> > >>> > > > > As of present, the proposal leaves the default config format
> > >>> > switching
> > >>> > > to
> > >>> > > > > sometime in the future. However, I think it is not a
> difficult
> > >>> task
> > >>> > and
> > >>> > > > is
> > >>> > > > > up to the community's decision. The draft implementation
> already
> > >>> > > includes
> > >>> > > > > log4j2 counterparts for all existing 1.x format (template)
> > >>> configs.
> > >>> > > > > Although it still uses traditional log4j format as a default
> for
> > >>> > > backward
> > >>> > > > > compatibility, the users who prefer the log4j2 configs can
> use
> > >>> it by
> > >>> > > > > setting `export
> > >>> > > > >
> > >>> > >
> > >>>
> KAFKA_LOG4J_OPTS="-Dlog4j.configurationFile={log4j2-config-file-path}"`.
> > >>> > > > > Whenever we change the default logging format, we must don't
> > >>> forget
> > >>> > to
> > >>> > > > > switch this functionality to the reverse, i.e., making log4j
> 1.x
> > >>> > format
> > >>> > > > > available as an opt-in.
> > >>> > > > >
> > >>> > > > > I am so concerned about the community's opinion when would be
> > >>> > adequate
> > >>> > > to
> > >>> > > > > make the log4j2 config as default.
> > >>> > > > >
> > >>> > > > > Thanks,
> > >>> > > > > Dongjin
> > >>> > > > >
> > >>> > > > > +1. As a note, I have an almost-completed implementation of
> > >>> log4j2
> > >>> > > > > equivalent for the log4j-appender. I think it would be great
> if
> > >>> this
> > >>> > > > > feature can be provided with changing the default logging
> config
> > >>> > > format.
> > >>> > > > >
> > >>> > > > > On Wed, Sep 16, 2020 at 11:49 PM Ismael Juma <
> ism...@juma.me.uk>
> > >>> > > wrote:
> > >>> > > > >
> > >>> > > > >> Thanks for the KIP, Dongjin. Have we considered switching
> to the
> > >>> > > log4j2
> > >>> > > > >> logging config format by default and providing a mechanism
> to
> > >>> use
> > >>> > the
> > >>> > > > old
> > >>> > > > >> format? It is likely that we will release 3.0 as the release
> > >>> after
> > >>> > > 2.7,
> > >>> > > > so
> > >>> > > > >> it would provide a good opportunity to move on from the
> legacy
> > >>> > config
> > >>> > > > >> format. The other option is to stick with the old format for
> > >>> 3.0 and
> > >>> > > > >> migrate to the new format in 4.0.
> > >>> > > > >>
> > >>> > > > >> Ismael
> > >>> > > > >>
> > >>> > > > >> On Wed, Aug 5, 2020 at 7:45 AM Dongjin Lee <
> dong...@apache.org>
> > >>> > > wrote:
> > >>> > > > >>
> > >>> > > > >> > Hi, Kafka dev,
> > >>> > > > >> >
> > >>> > > > >> > I hope to initiate the discussion of KIP-653, upgrading
> log4j
> > >>> to
> > >>> > > > log4j2.
> > >>> > > > >> >
> > >>> > > > >> >
> > >>> > > > >> >
> > >>> > > > >>
> > >>> > > >
> > >>> > >
> > >>> >
> > >>>
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-653%3A+Upgrade+log4j+to+log4j2
> > >>> > > > >> >
> > >>> > > > >> > All kinds of feedbacks are greatly appreciated!
> > >>> > > > >> >
> > >>> > > > >> > Best,
> > >>> > > > >> > Dongjin
> > >>> > > > >> >
> > >>> > > > >> > --
> > >>> > > > >> > *Dongjin Lee*
> > >>> > > > >> >
> > >>> > > > >> > *A hitchhiker in the mathematical world.*
> > >>> > > > >> >
> > >>> > > > >> >
> > >>> > > > >> >
> > >>> > > > >> >
> > >>> > > > >> > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > >>> > > > >> > <https://github.com/dongjinleekr>keybase:
> > >>> > > > >> https://keybase.io/dongjinleekr
> > >>> > > > >> > <https://keybase.io/dongjinleekr>linkedin:
> > >>> > > > >> kr.linkedin.com/in/dongjinleekr
> > >>> > > > >> > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> > >>> > > > >> > speakerdeck.com/dongjin
> > >>> > > > >> > <https://speakerdeck.com/dongjin>*
> > >>> > > > >> >
> > >>> > > > >>
> > >>> > > > >
> > >>> > > > >
> > >>> > > > > --
> > >>> > > > > *Dongjin Lee*
> > >>> > > > >
> > >>> > > > > *A hitchhiker in the mathematical world.*
> > >>> > > > >
> > >>> > > > >
> > >>> > > > >
> > >>> > > > >
> > >>> > > > > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > >>> > > > > <https://github.com/dongjinleekr>keybase:
> > >>> > > > https://keybase.io/dongjinleekr
> > >>> > > > > <https://keybase.io/dongjinleekr>linkedin:
> > >>> > > > kr.linkedin.com/in/dongjinleekr
> > >>> > > > > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> > >>> > > > speakerdeck.com/dongjin
> > >>> > > > > <https://speakerdeck.com/dongjin>*
> > >>> > > > >
> > >>> > > >
> > >>> > > >
> > >>> > > > --
> > >>> > > > *Dongjin Lee*
> > >>> > > >
> > >>> > > > *A hitchhiker in the mathematical world.*
> > >>> > > >
> > >>> > > >
> > >>> > > >
> > >>> > > >
> > >>> > > > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > >>> > > > <https://github.com/dongjinleekr>keybase:
> > >>> > > https://keybase.io/dongjinleekr
> > >>> > > > <https://keybase.io/dongjinleekr>linkedin:
> > >>> > > kr.linkedin.com/in/dongjinleekr
> > >>> > > > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> > >>> > > > speakerdeck.com/dongjin
> > >>> > > > <https://speakerdeck.com/dongjin>*
> > >>> > > >
> > >>> > >
> > >>> >
> > >>> >
> > >>> > --
> > >>> > *Dongjin Lee*
> > >>> >
> > >>> > *A hitchhiker in the mathematical world.*
> > >>> >
> > >>> >
> > >>> >
> > >>> >
> > >>> > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > >>> > <https://github.com/dongjinleekr>keybase:
> > >>> https://keybase.io/dongjinleekr
> > >>> > <https://keybase.io/dongjinleekr>linkedin:
> > >>> kr.linkedin.com/in/dongjinleekr
> > >>> > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> > >>> > speakerdeck.com/dongjin
> > >>> > <https://speakerdeck.com/dongjin>*
> > >>> >
> > >>>
> > >>
> > >>
> > >> --
> > >> *Dongjin Lee*
> > >>
> > >> *A hitchhiker in the mathematical world.*
> > >>
> > >>
> > >>
> > >>
> > >> *github:  <http://goog_969573159/>github.com/dongjinleekr
> > >> <https://github.com/dongjinleekr>keybase:
> https://keybase.io/dongjinleekr
> > >> <https://keybase.io/dongjinleekr>linkedin:
> kr.linkedin.com/in/dongjinleekr
> > >> <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> speakerdeck.com/dongjin
> > >> <https://speakerdeck.com/dongjin>*
> > >>
> > >
> > >
> > > --
> > > *Dongjin Lee*
> > >
> > > *A hitchhiker in the mathematical world.*
> > >
> > >
> > >
> > >
> > > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > > <https://github.com/dongjinleekr>keybase:
> https://keybase.io/dongjinleekr
> > > <https://keybase.io/dongjinleekr>linkedin:
> kr.linkedin.com/in/dongjinleekr
> > > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> speakerdeck.com/dongjin
> > > <https://speakerdeck.com/dongjin>*
> > >
> >
> >
> > --
> > *Dongjin Lee*
> >
> > *A hitchhiker in the mathematical world.*
> >
> >
> >
> >
> > *github:  <http://goog_969573159/>github.com/dongjinleekr
> > <https://github.com/dongjinleekr>keybase:
> https://keybase.io/dongjinleekr
> > <https://keybase.io/dongjinleekr>linkedin:
> kr.linkedin.com/in/dongjinleekr
> > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck:
> speakerdeck.com/dongjin
> > <https://speakerdeck.com/dongjin>*
>

Reply via email to