This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch fix/backport-log4j3-api in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 8882b25232308e8d8a9d093c5becfd54fa63180b Author: Piotr P. Karwasz <[email protected]> AuthorDate: Tue Mar 19 14:11:41 2024 +0100 Remove reflection from `log4j-to-jul` and `log4j-to-slf4j` By removing the reflective instantiation of `LoggerContextFactory` and `ThreadContextMap`, we make `log4j-to-jul` and `log4j-to-slf4j` more GraalVM-friendly. --- .../org/apache/logging/log4j/tojul/JULProvider.java | 16 +++++++++++++++- .../java/org/apache/logging/slf4j/SLF4JProvider.java | 18 +++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/log4j-to-jul/src/main/java/org/apache/logging/log4j/tojul/JULProvider.java b/log4j-to-jul/src/main/java/org/apache/logging/log4j/tojul/JULProvider.java index 9022d9abeb..0f371f43ef 100644 --- a/log4j-to-jul/src/main/java/org/apache/logging/log4j/tojul/JULProvider.java +++ b/log4j-to-jul/src/main/java/org/apache/logging/log4j/tojul/JULProvider.java @@ -18,6 +18,7 @@ package org.apache.logging.log4j.tojul; import aQute.bnd.annotation.Resolution; import aQute.bnd.annotation.spi.ServiceProvider; +import org.apache.logging.log4j.spi.LoggerContextFactory; import org.apache.logging.log4j.spi.Provider; /** @@ -27,7 +28,20 @@ import org.apache.logging.log4j.spi.Provider; */ @ServiceProvider(value = Provider.class, resolution = Resolution.OPTIONAL) public class JULProvider extends Provider { + private static final LoggerContextFactory CONTEXT_FACTORY = new JULLoggerContextFactory(); + public JULProvider() { - super(20, "2.6.0", JULLoggerContextFactory.class, null); + super(20, CURRENT_VERSION); + } + + @Override + public LoggerContextFactory getLoggerContextFactory() { + return CONTEXT_FACTORY; + } + + @Override + public String getThreadContextMap() { + // JUL does not provide an MDC implementation + return NO_OP_CONTEXT_MAP; } } diff --git a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JProvider.java b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JProvider.java index b8514c4f63..318d7937f6 100644 --- a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JProvider.java +++ b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JProvider.java @@ -18,14 +18,30 @@ package org.apache.logging.slf4j; import aQute.bnd.annotation.Resolution; import aQute.bnd.annotation.spi.ServiceProvider; +import org.apache.logging.log4j.spi.LoggerContextFactory; import org.apache.logging.log4j.spi.Provider; +import org.apache.logging.log4j.spi.ThreadContextMap; /** * Bind the Log4j API to SLF4J. */ @ServiceProvider(value = Provider.class, resolution = Resolution.OPTIONAL) public class SLF4JProvider extends Provider { + + private static final LoggerContextFactory CONTEXT_FACTORY = new SLF4JLoggerContextFactory(); + private static final ThreadContextMap THREAD_CONTEXT_MAP = new MDCContextMap(); + public SLF4JProvider() { - super(15, "2.6.0", SLF4JLoggerContextFactory.class, MDCContextMap.class); + super(15, CURRENT_VERSION); + } + + @Override + public LoggerContextFactory getLoggerContextFactory() { + return CONTEXT_FACTORY; + } + + @Override + public ThreadContextMap getThreadContextMapInstance() { + return THREAD_CONTEXT_MAP; } }
