Hi Tom,

1. > I think you mean tools-log4j.properties there, right?

Thanks for reading carefully. Yes, you are right. It was an error.

2. > Can the log4j-appender log a warning about its own deprecation?

That's a good suggestion. I hadn't thought of this part - adding a WARNing
message to the Log4jAppender would help, like:

> log4j-appender is deprecated and will be removed in a future release. For
migration, please refer to the latest documentation.

I just updated the proposal and the PR accordingly.

Best,
Dongjin

On Fri, Jan 21, 2022 at 9:32 PM Tom Bentley <tbent...@redhat.com> wrote:

> Hi Dongjin,
>
> Many thanks for the KIP. I have just a couple of minor points.
>
> 1. In the Proposed Changes section there is the sentence "For backward
> compatibility, these tools will use the log4j configuration
> file (tools-log4j2.properties) by default.", I think you mean
> tools-log4j.properties there, right?
>
> 2. Can the log4j-appender log a warning about its own deprecation? The
> "DEPRECATED: using log4j 1.x configuration. To use log4j 2.x
> configuration," message is a bit confusing since it suggests that it's just
> the use of 1.x configuration that's deprecated (which it is), but it's also
> the use of the appender itself which is deprecated.
>
> Kind regards,
>
> Tom
>
> On Thu, 20 Jan 2022 at 05:01, Dongjin Lee <dong...@apache.org> wrote:
>
> > Hi all,
> >
> > I just filed the issue based on the discussion here:
> >
> > KAFKA-13604: Add pluggable logging framework support (
> > https://issues.apache.org/jira/browse/KAFKA-13604)
> >
> > Thanks for posing a great issue, Viktor and Haruki!
> >
> > Best,
> > Dongjin
> >
> > On Thu, Jan 20, 2022 at 2:54 AM Viktor Somogyi-Vass
> > <viktor.somo...@cloudera.com.invalid> wrote:
> >
> > > Hi folks,
> > >
> > > >a) I think this makes sense. But I think this shouldn't block this
> > > KIP, it can be done after moving to log4j2.
> > >
> > > Absolutely.
> > >
> > > >However, this limitation may change in the future - slf4j will support
> > > dynamic logging levels in 2.0:
> > >
> > > This would be awesome, let's keep an eye on this.
> > >
> > > >Kafka avoided all the log4shell vulnerabilities exactly because we
> > DIDN'T
> > > move to log4j 2.x.
> > >
> > > My first reaction was how lucky we are (and all Kafka users) that we
> > didn't
> > > have to do anything on that weekend! Blessed are the lazy. :)
> > >
> > > Viktor
> > >
> > > On Tue, Jan 18, 2022 at 5:16 PM Colin McCabe <cmcc...@apache.org>
> wrote:
> > >
> > > > On Wed, Jan 12, 2022, at 02:37, Viktor Somogyi-Vass wrote:
> > > > > Hi Dongjin,
> > > > >
> > > > > We're also looking into this matter as our stack was also affected
> by
> > > all
> > > > > the log4j hell and users increasingly pushing us to upgrade to
> log4j2
> > > or
> > > > > logback because of the existing vulnerabilities in log4j1.
> > > > > Regarding the points raised by Haruki:
> > > > >
> > > >
> > > > I've heard the same thing from other people -- that there is now more
> > > > interest in moving from log4j1.x to log4j2.x, after all the recent
> > > > vulnerabilities in the latter. I found this a bit strange. Kafka
> > avoided
> > > > all the log4shell vulnerabilities exactly because we DIDN'T move to
> > log4j
> > > > 2.x. (Yes, I am aware that there is a longstanding vulnerability in
> > that
> > > > one log sink in log4j 1.x, but you can just not use that one.)
> > > >
> > > > I haven't thought about this very hard. Maybe it's still a good idea
> to
> > > > move to log4j2. But it's odd that nobody is commenting about how in
> > this
> > > > case, not updating actually prevented a major security incident for
> > > Kafka.
> > > >
> > > > best,
> > > > Colin
> > > >
> > > > >
> > > > > a) In my opinion the best would be to make the dynamic logger
> support
> > > > > (Log4jController and LoggingResource) pluggable for log4j2 and
> > logback
> > > > (so
> > > > > an interface could be used to define the dynamic logging control
> > > methods
> > > > > and a config to specify the implementation). That way we're not
> bound
> > > to
> > > > > either logback or log4j and seems like a low-effort thing to do.
> > > > > Additionally this could be used in Connect too in LoggingResource.
> > > > >
> > > > > b) I think testing dependencies aren't that important from the user
> > > > > perspective, it's fine to either use log4j2 or logback, whichever
> is
> > > > > easier. Kafka is either used from the distribution (tgz) or pulled
> in
> > > > > through maven, but test dependencies shouldn't be exposed to the
> > world.
> > > > >
> > > > > c) I would support deprecating the appender in favor of the log4j2
> > > Kafka
> > > > > appender. VerifiableLog4jAppender is intended as a testing tool
> > anyway,
> > > > so
> > > > > I think it's less important to change this to logback.
> > > > >
> > > > > Future vulnerabilities will always be found in either logback or
> > log4j2
> > > > or
> > > > > any other logging framework, so I think the safest approach is to
> > allow
> > > > > users to choose their implementation, while in tests I think we're
> > free
> > > > to
> > > > > use whatever we want as that shouldn't be constrained by
> > > vulnerabilities.
> > > > >
> > > > > Viktor
> > > > >
> > > > > On Thu, Dec 23, 2021 at 9:37 AM Haruki Okada <ocadar...@gmail.com>
> > > > wrote:
> > > > >
> > > > >> Thanks for the clarification.
> > > > >>
> > > > >> About 2, I wan't aware of those concerns.
> > > > >> Let me check them first.
> > > > >>
> > > > >>
> > > > >> Thanks,
> > > > >>
> > > > >> 2021年12月23日(木) 13:37 Dongjin Lee <dong...@apache.org>:
> > > > >>
> > > > >> > Hi Haruki,
> > > > >> >
> > > > >> >
> > > > >> > Thanks for organizing the issue.
> > > > >> >
> > > > >> >
> > > > >> > If the community prefers logback, I will gladly change the
> > > dependency
> > > > and
> > > > >> > update the PR. However, it has the following issues:
> > > > >> >
> > > > >> >
> > > > >> > 1. The log4j2 vulnerabilities seem mostly fixed, and KIP-653 +
> > > KIP-719
> > > > >> are
> > > > >> > not released yet. So, using log4j2 (whose recent update pace is
> so
> > > > high)
> > > > >> > will not affect the users.
> > > > >> >
> > > > >> >
> > > > >> > 2. To switch to logback, the following features should be
> > reworked:
> > > > >> >
> > > > >> >
> > > > >> >   a. Dynamic logger level configuration (core, connect)
> > > > >> >
> > > > >> >   b. Logging tests (streams)
> > > > >> >
> > > > >> >   c. Kafka Appender (tools)
> > > > >> >
> > > > >> >
> > > > >> > a and b are the most challenging ones since there is little
> > > > documentation
> > > > >> > on how to do this, so it requires analyzing the implementation
> > > itself.
> > > > >> > (what I actually did with log4j2) About c, logback does not
> > provide
> > > a
> > > > >> Kafka
> > > > >> > Appender so we have to provide an equivalent.
> > > > >> >
> > > > >> >
> > > > >> > It is why I prefer to use log4j2. How do you think?
> > > > >> >
> > > > >> >
> > > > >> > Thanks,
> > > > >> >
> > > > >> > Dongjin
> > > > >> >
> > > > >> >
> > > > >> > On Thu, Dec 23, 2021 at 9:01 AM Haruki Okada <
> ocadar...@gmail.com
> > >
> > > > >> wrote:
> > > > >> >
> > > > >> > > Hi, Dongjin,
> > > > >> > >
> > > > >> > > Sorry for interrupting the discussion.
> > > > >> > > And thank you for your hard work about KIP-653, KIP-719.
> > > > >> > >
> > > > >> > > I understand that KIP-653 is already accepted so log4j2 is the
> > > > choice
> > > > >> of
> > > > >> > > the Kafka community though, I'm now feeling that logback is a
> > > better
> > > > >> > choice
> > > > >> > > here.
> > > > >> > >
> > > > >> > > Reasons:
> > > > >> > >
> > > > >> > > - even after "log4shell", several vulnerabilities found on
> > log4j2
> > > so
> > > > >> new
> > > > >> > > versions are released and users have to update in high-pace
> > > > >> > >     * actually, a CVE was also reported for logback
> > > (CVE-2021-42550)
> > > > >> but
> > > > >> > it
> > > > >> > > requires edit-permission of the config file for an attacker so
> > > it's
> > > > >> much
> > > > >> > > less threatening
> > > > >> > > - log4j1.x and logback are made by same developer (ceki), so
> > > > >> > substantially
> > > > >> > > the successor of log4j1 is logback rather than log4j2
> > > > >> > > - in Hadoop project, seems similar suggestion was made from a
> > PMC
> > > > >> > >     * https://issues.apache.org/jira/browse/HADOOP-12956
> > > > >> > >
> > > > >> > >
> > > > >> > > What do you think about adopting logback instead?
> > > > >> > >
> > > > >> > >
> > > > >> > > Thanks,
> > > > >> > >
> > > > >> > > 2021年12月21日(火) 18:02 Dongjin Lee <dong...@apache.org>:
> > > > >> > >
> > > > >> > > > Hi Mickael,
> > > > >> > > >
> > > > >> > > > > In the meantime, you may want to bump the VOTE thread too.
> > > > >> > > >
> > > > >> > > > Sure, I just reset the voting thread with a brief context.
> > > > >> > > >
> > > > >> > > > Thanks,
> > > > >> > > > Dongjin
> > > > >> > > >
> > > > >> > > > On Tue, Dec 21, 2021 at 2:13 AM Mickael Maison <
> > > > >> > mickael.mai...@gmail.com
> > > > >> > > >
> > > > >> > > > wrote:
> > > > >> > > >
> > > > >> > > > > Thanks Dongjin!
> > > > >> > > > >
> > > > >> > > > > I'll take a look soon.
> > > > >> > > > > In the meantime, you may want to bump the VOTE thread too.
> > > > >> > > > >
> > > > >> > > > > Best,
> > > > >> > > > > Mickael
> > > > >> > > > >
> > > > >> > > > >
> > > > >> > > > > On Sat, Dec 18, 2021 at 10:00 AM Dongjin Lee <
> > > > dong...@apache.org>
> > > > >> > > wrote:
> > > > >> > > > > >
> > > > >> > > > > > Hi Mickael,
> > > > >> > > > > >
> > > > >> > > > > > Finally, I did it! As you can see at the PR
> > > > >> > > > > > <https://github.com/apache/kafka/pull/10244>, KIP-719
> now
> > > > uses
> > > > >> > > > log4j2's
> > > > >> > > > > > Kafka appender, and log4j-appender is not used by the
> > other
> > > > >> modules
> > > > >> > > > > > anymore. You can see how it will work with KIP-653 at
> this
> > > > >> preview
> > > > >> > > > > > <
> > > > >> http://home.apache.org/~dongjin/post/apache-kafka-log4j2-support/
> > > > >> > >,
> > > > >> > > > > based
> > > > >> > > > > > on Apache Kafka 3.0.0. The proposal document
> > > > >> > > > > > <
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-719%3A+Deprecate+Log4J+Appender
> > > > >> > > > > >
> > > > >> > > > > > is also updated accordingly, with its title.
> > > > >> > > > > >
> > > > >> > > > > > There is a minor issue on log4j2
> > > > >> > > > > > <https://issues.apache.org/jira/browse/LOG4J2-3256>,
> but
> > it
> > > > >> seems
> > > > >> > > like
> > > > >> > > > > it
> > > > >> > > > > > will be resolved soon.
> > > > >> > > > > >
> > > > >> > > > > > Best,
> > > > >> > > > > > Dongjin
> > > > >> > > > > >
> > > > >> > > > > > On Wed, Dec 15, 2021 at 9:28 PM Dongjin Lee <
> > > > dong...@apache.org>
> > > > >> > > > wrote:
> > > > >> > > > > >
> > > > >> > > > > > > Hi Mickael,
> > > > >> > > > > > >
> > > > >> > > > > > > > Can we do step 3 without breaking any compatibility?
> > If
> > > so
> > > > >> then
> > > > >> > > > that
> > > > >> > > > > > > sounds like a good idea.
> > > > >> > > > > > >
> > > > >> > > > > > > As far as I know, the answer is yes; I am now updating
> > my
> > > > PR,
> > > > >> so
> > > > >> > I
> > > > >> > > > will
> > > > >> > > > > > > notify you as soon as I complete the work.
> > > > >> > > > > > >
> > > > >> > > > > > > Best,
> > > > >> > > > > > > Dongjin
> > > > >> > > > > > >
> > > > >> > > > > > > On Wed, Dec 15, 2021 at 2:00 AM Mickael Maison <
> > > > >> > > > > mickael.mai...@gmail.com>
> > > > >> > > > > > > wrote:
> > > > >> > > > > > >
> > > > >> > > > > > >> Hi Dongjin,
> > > > >> > > > > > >>
> > > > >> > > > > > >> Sorry for the late reply. Can we do step 3 without
> > > breaking
> > > > >> any
> > > > >> > > > > > >> compatibility? If so then that sounds like a good
> idea.
> > > > >> > > > > > >>
> > > > >> > > > > > >> Thanks,
> > > > >> > > > > > >> Mickael
> > > > >> > > > > > >>
> > > > >> > > > > > >>
> > > > >> > > > > > >>
> > > > >> > > > > > >> On Tue, Nov 23, 2021 at 2:08 PM Dongjin Lee <
> > > > >> dong...@apache.org
> > > > >> > >
> > > > >> > > > > wrote:
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > Hi Mickael,
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > I also thought over the issue thoroughly and would
> > like
> > > > to
> > > > >> > > > propose a
> > > > >> > > > > > >> minor
> > > > >> > > > > > >> > change to your proposal:
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > 1. Deprecate log4j-appender now
> > > > >> > > > > > >> > 2. Document how to migrate into logging-log4j2
> > > > >> > > > > > >> > 3. (Changed) Replace the log4j-appender (in turn
> > log4j
> > > > 1.x)
> > > > >> > > > > > >> dependencies in
> > > > >> > > > > > >> > tools, trogdor, and shell and upgrade to log4j2 in
> > 3.x,
> > > > >> > removing
> > > > >> > > > > log4j
> > > > >> > > > > > >> 1.x
> > > > >> > > > > > >> > dependencies.
> > > > >> > > > > > >> > 4. (Changed) Remove log4j-appender in Kafka 4.0
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > What we need to do for the log4j2 upgrade is just
> > > > removing
> > > > >> the
> > > > >> > > > log4j
> > > > >> > > > > > >> > dependencies only, for they can cause a classpath
> > > error.
> > > > And
> > > > >> > > > > actually,
> > > > >> > > > > > >> we
> > > > >> > > > > > >> > can do it without discontinuing publishing the
> > > > >> log4j-appender
> > > > >> > > > > artifact.
> > > > >> > > > > > >> So,
> > > > >> > > > > > >> > I suggest separating the upgrade to log4j2 and
> > removing
> > > > the
> > > > >> > > > > > >> log4j-appender
> > > > >> > > > > > >> > module.
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > How do you think? If you agree, I will update the
> KIP
> > > and
> > > > >> the
> > > > >> > PR
> > > > >> > > > > > >> > accordingly ASAP.
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > Thanks,
> > > > >> > > > > > >> > Dongjin
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > On Mon, Nov 15, 2021 at 8:06 PM Mickael Maison <
> > > > >> > > > > > >> mickael.mai...@gmail.com>
> > > > >> > > > > > >> > wrote:
> > > > >> > > > > > >> >
> > > > >> > > > > > >> > > Hi Dongjin,
> > > > >> > > > > > >> > >
> > > > >> > > > > > >> > > Thanks for the clarifications.
> > > > >> > > > > > >> > >
> > > > >> > > > > > >> > > I wonder if a simpler course of action could be:
> > > > >> > > > > > >> > > - Deprecate log4j-appender now
> > > > >> > > > > > >> > > - Document how to use logging-log4j2
> > > > >> > > > > > >> > > - Remove log4j-appender and all the log4j
> > > dependencies
> > > > in
> > > > >> > > Kafka
> > > > >> > > > > 4.0
> > > > >> > > > > > >> > >
> > > > >> > > > > > >> > > This delays KIP-653 till Kafka 4.0 but (so far)
> > Kafka
> > > > is
> > > > >> not
> > > > >> > > > > directly
> > > > >> > > > > > >> > > affected by the log4j CVEs. At least this gives
> us
> > a
> > > > clear
> > > > >> > and
> > > > >> > > > > simple
> > > > >> > > > > > >> > > roadmap to follow.
> > > > >> > > > > > >> > >
> > > > >> > > > > > >> > > What do you think?
> > > > >> > > > > > >> > >
> > > > >> > > > > > >> > > On Tue, Nov 9, 2021 at 12:12 PM Dongjin Lee <
> > > > >> > > dong...@apache.org
> > > > >> > > > >
> > > > >> > > > > > >> wrote:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > Hi Mickael,
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > I greatly appreciate you for reading the
> proposal
> > > so
> > > > >> > > > carefully!
> > > > >> > > > > I
> > > > >> > > > > > >> wrote
> > > > >> > > > > > >> > > it
> > > > >> > > > > > >> > > > quite a while ago and rechecked it today.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > Is the KIP proposing to replace the existing
> > > > >> > log4-appender
> > > > >> > > > or
> > > > >> > > > > > >> simply
> > > > >> > > > > > >> > > add
> > > > >> > > > > > >> > > > a new one for log4j2? Reading the KIP and with
> > its
> > > > >> current
> > > > >> > > > > title,
> > > > >> > > > > > >> it's
> > > > >> > > > > > >> > > not
> > > > >> > > > > > >> > > > entirely explicit.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > Oh, After re-reading it, I realized that this
> is
> > > not
> > > > >> > clear.
> > > > >> > > > Let
> > > > >> > > > > me
> > > > >> > > > > > >> > > clarify;
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > 1. Provide a lo4j2 equivalent of traditional
> > > > >> > log4j-appender,
> > > > >> > > > > > >> > > > log4j2-appender.
> > > > >> > > > > > >> > > > 2. Migrate the modules depending on
> > log4j-appender
> > > > >> (i.e.,
> > > > >> > > > tools,
> > > > >> > > > > > >> trogdor,
> > > > >> > > > > > >> > > > shell) into log4j2-appender, removing
> > > log4j-appender
> > > > >> from
> > > > >> > > > > > >> dependencies.
> > > > >> > > > > > >> > > > 3. Entirely remove log4j-appender from the
> > project
> > > > >> > > > dependencies,
> > > > >> > > > > > >> along
> > > > >> > > > > > >> > > with
> > > > >> > > > > > >> > > > log4j.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > I think log4j-appender may be published for
> every
> > > new
> > > > >> > > release
> > > > >> > > > > like
> > > > >> > > > > > >> > > before,
> > > > >> > > > > > >> > > > but the committee should make a decision on the
> > > > policy.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > Under Rejected Alternative, the KIP states:
> > "the
> > > > Kafka
> > > > >> > > > > appender
> > > > >> > > > > > >> > > provided
> > > > >> > > > > > >> > > > by log4j2 community stores log message in the
> > > Record
> > > > >> key".
> > > > >> > > > > Looking
> > > > >> > > > > > >> at the
> > > > >> > > > > > >> > > > code, it looks like the log message is stored
> in
> > > the
> > > > >> > Record
> > > > >> > > > > value:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://github.com/apache/logging-log4j2/blob/master/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaManager.java#L135
> > > > >> > > > > > >> > > > Am I missing something?
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > It's totally my fault; I confused it with
> another
> > > > >> > appender.
> > > > >> > > > The
> > > > >> > > > > > >> > > > compatibility problem in the logging-log4j2
> Kafka
> > > > >> appender
> > > > >> > > is
> > > > >> > > > > not
> > > > >> > > > > > >> the
> > > > >> > > > > > >> > > > format but the configuration. logging-log4j2
> > Kafka
> > > > >> > appender
> > > > >> > > > > supports
> > > > >> > > > > > >> > > > `properties` configuration, which will be
> > directly
> > > > used
> > > > >> to
> > > > >> > > > > > >> instantiate a
> > > > >> > > > > > >> > > > Kafka producer. However, log4j-appender has
> been
> > > > using
> > > > >> > > > > non-producer
> > > > >> > > > > > >> > > config
> > > > >> > > > > > >> > > > names like brokerList (=bootstrap.servers),
> > > > >> > requiredNumAcks
> > > > >> > > > > (=acks).
> > > > >> > > > > > >> > > > Instead, logging-log4j2 Kafka appender supports
> > > > >> > retryCount,
> > > > >> > > > > > >> > > > sendEventTimestamp.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > On second thought, using logging-log4j2 Kafka
> > > > appender
> > > > >> > > > > internally
> > > > >> > > > > > >> and
> > > > >> > > > > > >> > > > making log4j2-appender to focus on
> compatibility
> > > > facade
> > > > >> > only
> > > > >> > > > > would
> > > > >> > > > > > >> be a
> > > > >> > > > > > >> > > > better approach; As I described above, the goal
> > of
> > > > this
> > > > >> > > module
> > > > >> > > > > is
> > > > >> > > > > > >> just
> > > > >> > > > > > >> > > > keeping the backward-compatibility, and (as you
> > > > pointed
> > > > >> > out)
> > > > >> > > > the
> > > > >> > > > > > >> current
> > > > >> > > > > > >> > > > implementation has little value. Since
> > > > >> > > > > > >> > > org.apache.logging.log4j:log4j-core
> > > > >> > > > > > >> > > > already includes Kafka appender, we can make
> use
> > of
> > > > the
> > > > >> > > > 'proven
> > > > >> > > > > > >> wheel'
> > > > >> > > > > > >> > > > without adding more dependencies. I have not
> > tried
> > > it
> > > > >> yet,
> > > > >> > > > but I
> > > > >> > > > > > >> think it
> > > > >> > > > > > >> > > > is well worth it. (One additional advantage of
> > this
> > > > >> > approach
> > > > >> > > > is
> > > > >> > > > > > >> > > providing a
> > > > >> > > > > > >> > > > bridge to the users who hope to move from/into
> > > > >> > > logging-log4j2
> > > > >> > > > > Kafka
> > > > >> > > > > > >> > > > appender.)
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > As the current log4j-appender is not even
> > > > deprecated
> > > > >> > yet,
> > > > >> > > in
> > > > >> > > > > > >> theory we
> > > > >> > > > > > >> > > > can't remove it till Kafka 4. If we want to
> speed
> > > up
> > > > the
> > > > >> > > > > process, I
> > > > >> > > > > > >> > > wonder
> > > > >> > > > > > >> > > > if the lack of documentation and a migration
> > guide
> > > > could
> > > > >> > > help
> > > > >> > > > > us.
> > > > >> > > > > > >> What do
> > > > >> > > > > > >> > > > you think?
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > In fact, this is what I am doing nowadays.
> While
> > > > working
> > > > >> > > with
> > > > >> > > > > > >> > > > log4j-appender, I found that despite a lack of
> > > > >> > > documentation,
> > > > >> > > > > > >> > > considerable
> > > > >> > > > > > >> > > > users are already using it[^1][^2][^3][^4][^5].
> > > So, I
> > > > >> > think
> > > > >> > > > > > >> providing a
> > > > >> > > > > > >> > > > documentation to those who are already using
> > > > >> > log4j-appender
> > > > >> > > is
> > > > >> > > > > > >> > > > indispensable. It should include:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > - What is the difference between log4j-appender
> > vs.
> > > > >> > > > > log4j2-appender.
> > > > >> > > > > > >> > > > - Which options are supported and deprecated.
> > > > >> > > > > > >> > > > - Exemplar configurations that show how to
> > migrate.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > Here is the summary:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > 1. The goal of this proposal is to replace the
> > > > >> traditional
> > > > >> > > > > > >> log4j-appender
> > > > >> > > > > > >> > > > for compatibility concerns. But log4j-appender
> > may
> > > be
> > > > >> > > > published
> > > > >> > > > > > >> after the
> > > > >> > > > > > >> > > > deprecation.
> > > > >> > > > > > >> > > > 2. As of present, the description about
> > > > logging-log4j2
> > > > >> > Kafka
> > > > >> > > > > > >> appender is
> > > > >> > > > > > >> > > > entirely wrong. The problem is interface
> > > > compatibility,
> > > > >> > not
> > > > >> > > > > record
> > > > >> > > > > > >> > > format.
> > > > >> > > > > > >> > > > Focusing on the compatibility facade is a good
> > > > approach.
> > > > >> > > > > > >> > > > 3. A documentation focus on migration should be
> > > > >> provided.
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > If you have any questions or suggestions, don't
> > > > hesitate
> > > > >> > to
> > > > >> > > > > tell me.
> > > > >> > > > > > >> > > Thanks
> > > > >> > > > > > >> > > > again for your comments!
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > Best,
> > > > >> > > > > > >> > > > Dongjin
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > [^1]:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://docs.cloudera.com/csa/1.2.0/monitoring/topics/csa-kafka-logging.html
> > > > >> > > > > > >> > > > [^2]:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://stackoverflow.com/questions/22034895/how-to-use-kafka-0-8-log4j-appender
> > > > >> > > > > > >> > > > [^3]:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://stackoverflow.com/questions/32402405/delay-in-kafka-log4j-appender
> > > > >> > > > > > >> > > > [^4]:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://stackoverflow.com/questions/32301129/kafka-log4j-appender-not-sending-messages
> > > > >> > > > > > >> > > > [^5]:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://stackoverflow.com/questions/35628706/kafka-log4j-appender-0-9-does-not-work
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > On Mon, Nov 8, 2021 at 9:04 PM Mickael Maison <
> > > > >> > > > > > >> mickael.mai...@gmail.com>
> > > > >> > > > > > >> > > > wrote:
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > Hi Dongjin,
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > Thanks for working on the update to log4j2,
> > it's
> > > > >> > > > definitively
> > > > >> > > > > > >> > > > > something we should complete.
> > > > >> > > > > > >> > > > > I have a couple of comments:
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > 1) Is the KIP proposing to replace the
> existing
> > > > >> > > > log4-appender
> > > > >> > > > > or
> > > > >> > > > > > >> > > > > simply add a new one for log4j2? Reading the
> > KIP
> > > > and
> > > > >> > with
> > > > >> > > > its
> > > > >> > > > > > >> current
> > > > >> > > > > > >> > > > > title, it's not entirely explicit. For
> example
> > I
> > > > don't
> > > > >> > > see a
> > > > >> > > > > > >> statement
> > > > >> > > > > > >> > > > > under the proposed changes section. The PR
> > seems
> > > to
> > > > >> only
> > > > >> > > add
> > > > >> > > > > a new
> > > > >> > > > > > >> > > > > appender but the KIP mentions we want to
> fully
> > > > remove
> > > > >> > > > > > >> dependencies to
> > > > >> > > > > > >> > > > > log4j.
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > 2) Under Rejected Alternative, the KIP
> states:
> > > "the
> > > > >> > Kafka
> > > > >> > > > > appender
> > > > >> > > > > > >> > > > > provided by log4j2 community stores log
> message
> > > in
> > > > the
> > > > >> > > > Record
> > > > >> > > > > > >> key".
> > > > >> > > > > > >> > > > > Looking at the code, it looks like the log
> > > message
> > > > is
> > > > >> > > stored
> > > > >> > > > > in
> > > > >> > > > > > >> the
> > > > >> > > > > > >> > > > > Record value:
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://github.com/apache/logging-log4j2/blob/master/log4j-kafka/src/main/java/org/apache/logging/log4j/kafka/appender/KafkaManager.java#L135
> > > > >> > > > > > >> > > > > Am I missing something?
> > > > >> > > > > > >> > > > > Comparing it with the proposed new appender,
> > > apart
> > > > >> from
> > > > >> > > > their
> > > > >> > > > > > >> > > > > configuration format (hence the backwards
> > > > >> compatibility
> > > > >> > > > > issues),
> > > > >> > > > > > >> they
> > > > >> > > > > > >> > > > > both work pretty much the same way, so it's
> not
> > > > clear
> > > > >> it
> > > > >> > > > would
> > > > >> > > > > > >> add a
> > > > >> > > > > > >> > > > > ton a value.
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > At a glance, _I've not extensively looked at
> > it_,
> > > > it
> > > > >> > does
> > > > >> > > > not
> > > > >> > > > > look
> > > > >> > > > > > >> > > > > very hard to migrate to the appender from the
> > > > logging
> > > > >> > > team.
> > > > >> > > > I
> > > > >> > > > > was
> > > > >> > > > > > >> > > > > wondering if we should mention it in our
> > > > documentation
> > > > >> > > but I
> > > > >> > > > > was
> > > > >> > > > > > >> not
> > > > >> > > > > > >> > > > > able to find any references to the
> > log4j-appender
> > > > in
> > > > >> the
> > > > >> > > > Kafka
> > > > >> > > > > > >> docs:
> > > > >> > > > > > >> > > > >
> > > > >> > > > >
> > > > https://github.com/apache/kafka-site/search?q=KafkaLog4jAppender
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > As the current log4j-appender is not even
> > > > deprecated
> > > > >> > yet,
> > > > >> > > in
> > > > >> > > > > > >> theory we
> > > > >> > > > > > >> > > > > can't remove it till Kafka 4. If we want to
> > speed
> > > > up
> > > > >> the
> > > > >> > > > > process,
> > > > >> > > > > > >> I
> > > > >> > > > > > >> > > > > wonder if the lack of documentation and a
> > > migration
> > > > >> > guide
> > > > >> > > > > could
> > > > >> > > > > > >> help
> > > > >> > > > > > >> > > > > us. What do you think?
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > Thanks,
> > > > >> > > > > > >> > > > > Mickael
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > > > > On Fri, Jun 11, 2021 at 4:57 PM Boojapho O <
> > > > >> > > > > booja...@gmail.com>
> > > > >> > > > > > >> wrote:
> > > > >> > > > > > >> > > > > >
> > > > >> > > > > > >> > > > > > Continuing to use log4j would leave several
> > > known
> > > > >> > > security
> > > > >> > > > > > >> > > > > vulnerabilities in Apache Kafka, including
> > > > >> > > > > > >> > > > >
> > https://nvd.nist.gov/vuln/detail/CVE-2019-17571.
> > > > The
> > > > >> > > > Apache
> > > > >> > > > > > >> log4j
> > > > >> > > > > > >> > > team
> > > > >> > > > > > >> > > > > will not fix this vulnerability and is urging
> > an
> > > > >> upgrade
> > > > >> > > to
> > > > >> > > > > > >> log4j2.
> > > > >> > > > > > >> > > See
> > > > >> > > > > > >> > > > > https://logging.apache.org/log4j/1.2/ for
> > > further
> > > > >> > > > > information.
> > > > >> > > > > > >> > > > > >
> > > > >> > > > > > >> > > > > > This is desperately needed in Apache 3.0 to
> > > keep
> > > > the
> > > > >> > > > > software
> > > > >> > > > > > >> secure.
> > > > >> > > > > > >> > > > > >
> > > > >> > > > > > >> > > > > > On 2021/05/26 12:31:20, Dongjin Lee <
> > > > >> > dong...@apache.org
> > > > >> > > >
> > > > >> > > > > wrote:
> > > > >> > > > > > >> > > > > > > CC'd the +1ers of KIP-653 with detailed
> > > > context:
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > When I submitted and got the approval of
> > > > KIP-653:
> > > > >> > > > Upgrade
> > > > >> > > > > > >> log4j to
> > > > >> > > > > > >> > > > > log4j2
> > > > >> > > > > > >> > > > > > > <
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-653%3A+Upgrade+log4j+to+log4j2
> > > > >> > > > > > >> > > > > >,
> > > > >> > > > > > >> > > > > > > I thought the log4j2-appender should not
> be
> > > the
> > > > >> > scope
> > > > >> > > of
> > > > >> > > > > the
> > > > >> > > > > > >> work.
> > > > >> > > > > > >> > > But
> > > > >> > > > > > >> > > > > it
> > > > >> > > > > > >> > > > > > > was wrong.
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > Since the VerifiableLog4jAppender tool is
> > > built
> > > > >> upon
> > > > >> > > > > > >> > > log4j-appender,
> > > > >> > > > > > >> > > > > log4j
> > > > >> > > > > > >> > > > > > > 1.x artifact will co-exist with log4j2
> > > > artifact in
> > > > >> > the
> > > > >> > > > > > >> classpath
> > > > >> > > > > > >> > > within
> > > > >> > > > > > >> > > > > > > this scheme. Since the log4j 1.x code is
> > not
> > > > >> called
> > > > >> > > > > anymore, I
> > > > >> > > > > > >> > > thought
> > > > >> > > > > > >> > > > > it
> > > > >> > > > > > >> > > > > > > is not problematic but actually, it was
> > not -
> > > > >> when I
> > > > >> > > > > started
> > > > >> > > > > > >> to
> > > > >> > > > > > >> > > > > provide a
> > > > >> > > > > > >> > > > > > > preview of KIP-653
> > > > >> > > > > > >> > > > > > > <
> > > > >> > > > > > >>
> > > > >> >
> http://home.apache.org/~dongjin/post/apache-kafka-log4j2-support/
> > > > >> > > > > > >> > > >,
> > > > >> > > > > > >> > > > > some
> > > > >> > > > > > >> > > > > > > users reported that sometimes slf4j fails
> > to
> > > > find
> > > > >> > the
> > > > >> > > > > > >> appropriate
> > > > >> > > > > > >> > > > > binding
> > > > >> > > > > > >> > > > > > > within the classpath, resulting fail to
> > > append
> > > > the
> > > > >> > log
> > > > >> > > > > > >> message.
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > To resolve this problem, I subtly
> adjusted
> > > the
> > > > >> scope
> > > > >> > > of
> > > > >> > > > > the
> > > > >> > > > > > >> work; I
> > > > >> > > > > > >> > > > > > > excluded Tools and Trogdor from KIP-653
> and
> > > > >> extended
> > > > >> > > > > KIP-719
> > > > >> > > > > > >> to
> > > > >> > > > > > >> > > take
> > > > >> > > > > > >> > > > > care
> > > > >> > > > > > >> > > > > > > of them instead, along with providing
> > > > >> > log4j2-appender.
> > > > >> > > > It
> > > > >> > > > > is
> > > > >> > > > > > >> why
> > > > >> > > > > > >> > > the
> > > > >> > > > > > >> > > > > > > current WIP implementations include some
> > > > classpath
> > > > >> > > logic
> > > > >> > > > > in
> > > > >> > > > > > >> the
> > > > >> > > > > > >> > > shell
> > > > >> > > > > > >> > > > > > > script and *why KIP-653 only can't
> complete
> > > the
> > > > >> > log4j2
> > > > >> > > > > > >> migration*.
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > I hope you will check this proposal out.
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > Best,
> > > > >> > > > > > >> > > > > > > Dongjin
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > On Tue, May 25, 2021 at 10:43 PM Dongjin
> > Lee
> > > <
> > > > >> > > > > > >> dong...@apache.org>
> > > > >> > > > > > >> > > > > wrote:
> > > > >> > > > > > >> > > > > > >
> > > > >> > > > > > >> > > > > > > > Bumping up the discussion thread.
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > Recently, I updated the document of
> > > KIP-653:
> > > > >> > Upgrade
> > > > >> > > > > log4j
> > > > >> > > > > > >> to
> > > > >> > > > > > >> > > log4j2
> > > > >> > > > > > >> > > > > > > > <
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-653%3A+Upgrade+log4j+to+log4j2
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > (accepted)
> > > > >> > > > > > >> > > > > > > > and KIP-719: Add Log4J2 Appender
> > > > >> > > > > > >> > > > > > > > <
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-719%3A+Add+Log4J2+Appender
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > (under
> > > > >> > > > > > >> > > > > > > > discussion) reflecting the recent
> changes
> > > to
> > > > our
> > > > >> > > > > codebase.
> > > > >> > > > > > >> > > > > Especially:
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > 1. KIP-653 document
> > > > >> > > > > > >> > > > > > > > <
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-653%3A+Upgrade+log4j+to+log4j2
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > now
> > > > >> > > > > > >> > > > > > > > explains which modules will be migrated
> > and
> > > > why.
> > > > >> > > > > > >> > > > > > > > 2. KIP-719 document
> > > > >> > > > > > >> > > > > > > > <
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-719%3A+Add+Log4J2+Appender
> > > > >> > > > > > >> > > >
> > > > >> > > > > > >> > > > > now
> > > > >> > > > > > >> > > > > > > > explains not only the log4j2-appender
> > plan
> > > > but
> > > > >> > also
> > > > >> > > > > > >> upgrading the
> > > > >> > > > > > >> > > > > omitted
> > > > >> > > > > > >> > > > > > > > modules in KIP-653 into log4j2.
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > As you can see here, those two KIPs are
> > the
> > > > >> > > different
> > > > >> > > > > parts
> > > > >> > > > > > >> of
> > > > >> > > > > > >> > > the
> > > > >> > > > > > >> > > > > same
> > > > >> > > > > > >> > > > > > > > problem. I believe the community will
> > have
> > > a
> > > > >> good
> > > > >> > > > grasp
> > > > >> > > > > on
> > > > >> > > > > > >> why
> > > > >> > > > > > >> > > both
> > > > >> > > > > > >> > > > > KIPs
> > > > >> > > > > > >> > > > > > > > are best if released altogether.
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > I will open the voting thread now, and
> > > please
> > > > >> > leave
> > > > >> > > a
> > > > >> > > > > vote
> > > > >> > > > > > >> if
> > > > >> > > > > > >> > > you are
> > > > >> > > > > > >> > > > > > > > interested in this issue.
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > Best,
> > > > >> > > > > > >> > > > > > > > Dongjin
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > > On Tue, Mar 2, 2021 at 5:00 PM Dongjin
> > Lee
> > > <
> > > > >> > > > > > >> dong...@apache.org>
> > > > >> > > > > > >> > > > > wrote:
> > > > >> > > > > > >> > > > > > > >
> > > > >> > > > > > >> > > > > > > >> Hi Kafka dev,
> > > > >> > > > > > >> > > > > > > >>
> > > > >> > > > > > >> > > > > > > >> I would like to start the discussion
> of
> > > > >> KIP-719:
> > > > >> > > Add
> > > > >> > > > > Log4J2
> > > > >> > > > > > >> > > > > Appender.
> > > > >> > > > > > >> > > > > > > >>
> > > > >> > > > > > >> > > > > > > >>
> > > > >> > > > > > >> > > > > > > >>
> > > > >> > > > > > >> > > > >
> > > > >> > > > > > >> > >
> > > > >> > > > > > >>
> > > > >> > > > >
> > > > >> > > >
> > > > >> > >
> > > > >> >
> > > > >>
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-719%3A+Add+Log4J2+Appender
> > > > >> > > > > > >> > > > > > > >>
> > > > >> > > > > > >> > > > > > > >> 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>*
> > > > >> > > > >
> > > > >> > > >
> > > > >> > > >
> > > > >> > > > --
> > > > >> > > > *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>*
> > > > >> > > >
> > > > >> > >
> > > > >> > >
> > > > >> > > --
> > > > >> > > ========================
> > > > >> > > Okada Haruki
> > > > >> > > ocadar...@gmail.com
> > > > >> > > ========================
> > > > >> > >
> > > > >> >
> > > > >> >
> > > > >> > --
> > > > >> > *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>*
> > > > >> >
> > > > >>
> > > > >>
> > > > >> --
> > > > >> ========================
> > > > >> Okada Haruki
> > > > >> ocadar...@gmail.com
> > > > >> ========================
> > > > >>
> > > >
> > >
> >
> >
> > --
> > *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