I brought this up in the incubator mailing list, and was suggested to
report directly to the log4j community.

https://issues.apache.org/jira/browse/HADOOP-16206

In hadoop we started to try migrating to log4j2 long ago, but it is not
easy. For now, one of the most blocker issues is the lack of support of
'log4j.rootLogger=INFO,Console' grammar. Notice that we do not want to stay
on the bridge api, we want to fully migrate to log4j2 finally, so
supporting the above grammar in log4j1 bridge is not enough.

This is the main log4j configuration file for hadoop

https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/conf/log4j.properties

We have this in the file

# Define the root logger to the system property "hadoop.root.logger".
> log4j.rootLogger=${hadoop.root.logger}


So our users could simply pass -Dhadoop.root.logger to control the level
and appender.

https://github.com/apache/hadoop/blob/39efbc6b6fe53abed15f5639edcbaaa2a9dda6d2/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh#L904

Here we use an environment variable in our start up scripts. And I believe
there are lots of other hadoop deployment systems which will have their own
start scripts.

So in general, it is just impossible for us to drop the
-Dhadoop.root.logger way of configuring our logging system.

So here I want to ask if it is possible for log4j2 to still support the
'log4j.rootLogger=INFO,Console' grammar. I'm not saying you must add it
back with no change, we just need a way to configure the level and appeners
at once, so something like
'log4j2.rootLogger.levelAndAppender=INFO,Console' is also OK.

Thanks.

Reply via email to