-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Description
When we upgraded log4j2
from version 2.22.1
to 2.23.0
in Spark, we found that logs that could have been printed before are no longer being printed.
Configuration
# This log4j config file is for integration test SparkConfPropagateSuite.
rootLogger.level = debug
rootLogger.appenderRef.stdout.ref = console
appender.console.type = Console
appender.console.name = console
appender.console.target = SYSTEM_ERR
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{HH:mm:ss.SSS} %p %c: %maxLen{%m}{512}%n%ex{8}%n
Version: [Log4j version]
2.23.0
Operating system: [OS and version]
Ubuntu 22.04.4 LTS
And macos Sonama 14.3.1
.
JDK: [JDK distribution and version]
JDK 17
Logs
The following are the logs printed in version 2.22.1
:
...
TRACE StatusLogger DefaultConfiguration cleaning Appenders from 1 LoggerConfigs.
DEBUG StatusLogger Stopped org.apache.logging.log4j.core.config.DefaultConfiguration@384ad17b OK
TRACE StatusLogger Reregistering MBeans after reconfigure. Selector=org.apache.logging.log4j.core.selector.ClassLoaderContextSelector@5852c06f
TRACE StatusLogger Reregistering context (1/1): '5ffd2b27' org.apache.logging.log4j.core.LoggerContext@31190526
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=StatusLogger'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=ContextSelector'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=Loggers,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=Appenders,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=AsyncAppenders,name=*'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=AsyncLoggerRingBuffer'
TRACE StatusLogger Unregistering but no MBeans found matching 'org.apache.logging.log4j2:type=5ffd2b27,component=Loggers,name=*,subtype=RingBuffer'
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=5ffd2b27
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=5ffd2b27,component=StatusLogger
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=5ffd2b27,component=ContextSelector
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=5ffd2b27,component=Loggers,name=
DEBUG StatusLogger Registering MBean org.apache.logging.log4j2:type=5ffd2b27,component=Appenders,name=console
TRACE StatusLogger Using default SystemClock for timestamps.
DEBUG StatusLogger org.apache.logging.log4j.core.util.SystemClock supports precise timestamps.
TRACE StatusLogger Using DummyNanoClock for nanosecond timestamps.
DEBUG StatusLogger Reconfiguration complete for context[name=5ffd2b27] at URI /Users/yangjie01/Tools/4.0/spark-4.0.0-SNAPSHOT-bin-3.3.6/conf/log4j2.properties (org.apache.logging.log4j.core.LoggerContext@31190526) with optional ClassLoader: null
DEBUG StatusLogger Shutdown hook enabled. Registering a new one.
...
In version 2.23.0
, StatusLogger
related logs are no longer printed, eg
DEBUG StatusLogger Reconfiguration complete for context[name=5ffd2b27] at URI /Users/yangjie01/Tools/4.0/spark-4.0.0-SNAPSHOT-bin-3.3.6/conf/log4j2.properties (org.apache.logging.log4j.core.LoggerContext@31190526) with optional ClassLoader: null
The above logs will no longer be output.
Reproduction
The relevant upgrade PR in Spark is
apache/spark#45292
I found that it was caused by the following changes:
-
log4j2 version
2.22.1
https://github.com/apache/logging-log4j2/blob/rel/2.22.1/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java#L252-L254
https://github.com/apache/logging-log4j2/blob/rel/2.22.1/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java#L2336-L2346
logging-log4j2/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java
Lines 480 to 487 in 8469975
public boolean isEnabled(final Level level, final Marker marker) { if (DEBUG_ENABLED) { return true; } if (listeners.size() > 0) { return listenersLevel >= level.intLevel(); } return logger.isEnabled(level, marker);
https://github.com/apache/logging-log4j2/blob/rel/2.22.1/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java#L82-L83
-
log4j2 version
2.23.0
https://github.com/apache/logging-log4j2/blob/rel/2.23.0/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusLogger.java#L747-L752