This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch 
bugfix/267-UIMA-Log4jLogger_impl-not-compatible-with-log4j-2.18.0
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git

commit c98e9c4c425e6f47de110d8b635156a40f6f24d7
Author: Richard Eckart de Castilho <[email protected]>
AuthorDate: Wed Dec 7 09:51:24 2022 +0100

    #267 - UIMA Log4jLogger_impl not compatible with log4j 2.18.0+
    
    - Use reflection to pry-open a protected class that was previously public - 
frankly, this is not a good solution...
---
 .../org/apache/uima/util/impl/Log4jLogger_impl.java   | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/uimaj-core/src/main/java/org/apache/uima/util/impl/Log4jLogger_impl.java 
b/uimaj-core/src/main/java/org/apache/uima/util/impl/Log4jLogger_impl.java
index 1881df81a..7b6dd09c0 100644
--- a/uimaj-core/src/main/java/org/apache/uima/util/impl/Log4jLogger_impl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/util/impl/Log4jLogger_impl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.uima.util.impl;
 
+import java.lang.reflect.Field;
 import java.text.MessageFormat;
 
 import org.apache.logging.log4j.LogManager;
@@ -241,7 +242,23 @@ public class Log4jLogger_impl extends Logger_common_impl {
   }
 
   private static org.apache.logging.log4j.Marker m(Marker m) {
-    return (m == null) ? null : ((org.apache.logging.slf4j.Log4jMarker) 
m).getLog4jMarker();
+    if (m == null) {
+      return null;
+    }
+
+    Field markerField = null;
+    try {
+      markerField = m.getClass().getDeclaredField("marker");
+      markerField.setAccessible(true);
+      return (org.apache.logging.log4j.Marker) markerField.get(m);
+    } catch (Exception e) {
+      // Well, best effort...
+      return null;
+    } finally {
+      if (markerField != null) {
+        markerField.setAccessible(false);
+      }
+    }
   }
 
   /*

Reply via email to