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); + } + } } /*
