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;
     }
 }

Reply via email to