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 d79ea661f4e79c6dc836af021f0ff4659695c7a8 Author: Piotr P. Karwasz <[email protected]> AuthorDate: Fri Mar 15 14:29:50 2024 +0100 Make default message factories GraalVM friendly --- .../log4j/message/DefaultFlowMessageFactory.java | 22 ++++++++++++++-------- .../apache/logging/log4j/spi/AbstractLogger.java | 14 ++------------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/DefaultFlowMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/DefaultFlowMessageFactory.java index 1c6fcd3f45..3ca2aeba41 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/DefaultFlowMessageFactory.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/DefaultFlowMessageFactory.java @@ -17,8 +17,7 @@ package org.apache.logging.log4j.message; import java.io.Serializable; -import org.apache.logging.log4j.spi.AbstractLogger; -import org.apache.logging.log4j.util.LoaderUtil; +import java.util.Objects; import org.apache.logging.log4j.util.StringBuilderFormattable; import org.apache.logging.log4j.util.StringBuilders; import org.apache.logging.log4j.util.Strings; @@ -34,6 +33,8 @@ public class DefaultFlowMessageFactory implements FlowMessageFactory, Serializab private static final String ENTRY_DEFAULT_PREFIX = "Enter"; private static final long serialVersionUID = 8578655591131397576L; + public static final FlowMessageFactory INSTANCE = new DefaultFlowMessageFactory(); + private final String entryText; private final String exitText; private final MessageFactory messageFactory; @@ -51,17 +52,22 @@ public class DefaultFlowMessageFactory implements FlowMessageFactory, Serializab * @param exitText the text to use for trace exit, like {@code "Exit"}. */ public DefaultFlowMessageFactory(final String entryText, final String exitText) { + this(entryText, exitText, createDefaultMessageFactory()); + } + + public DefaultFlowMessageFactory(final MessageFactory messageFactory) { + this(ENTRY_DEFAULT_PREFIX, EXIT_DEFAULT_PREFIX, Objects.requireNonNull(messageFactory)); + } + + private DefaultFlowMessageFactory( + final String entryText, final String exitText, final MessageFactory messageFactory) { this.entryText = entryText; this.exitText = exitText; - this.messageFactory = createDefaultMessageFactory(); + this.messageFactory = messageFactory; } private static MessageFactory createDefaultMessageFactory() { - try { - return LoaderUtil.newInstanceOf(AbstractLogger.DEFAULT_MESSAGE_FACTORY_CLASS); - } catch (final ReflectiveOperationException e) { - throw new IllegalStateException(e); - } + return ParameterizedMessageFactory.INSTANCE; } private static class AbstractFlowMessage implements FlowMessage, StringBuilderFormattable { diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java index d9543f17b5..30d0cffef0 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java @@ -35,7 +35,6 @@ import org.apache.logging.log4j.message.StringFormattedMessage; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.Constants; import org.apache.logging.log4j.util.LambdaUtil; -import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.MessageSupplier; import org.apache.logging.log4j.util.PerformanceSensitive; import org.apache.logging.log4j.util.StackLocatorUtil; @@ -198,12 +197,7 @@ public abstract class AbstractLogger implements ExtendedLogger, LocationAwareLog } private static MessageFactory2 createDefaultMessageFactory() { - try { - final MessageFactory result = LoaderUtil.newInstanceOf(DEFAULT_MESSAGE_FACTORY_CLASS); - return narrow(result); - } catch (final ReflectiveOperationException e) { - throw new IllegalStateException(e); - } + return ParameterizedMessageFactory.INSTANCE; } private static MessageFactory2 narrow(final MessageFactory result) { @@ -214,11 +208,7 @@ public abstract class AbstractLogger implements ExtendedLogger, LocationAwareLog } private static FlowMessageFactory createDefaultFlowMessageFactory() { - try { - return LoaderUtil.newInstanceOf(DEFAULT_FLOW_MESSAGE_FACTORY_CLASS); - } catch (final ReflectiveOperationException e) { - throw new IllegalStateException(e); - } + return DefaultFlowMessageFactory.INSTANCE; } @Override
