[LOG4J2-2317] MutableLogEvent.getNonNullImmutableMessage retains format and parameters
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/bc4bf6df Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/bc4bf6df Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/bc4bf6df Branch: refs/heads/release-2.x Commit: bc4bf6df0176b513c9f1818ea5f15645ee528dd3 Parents: 011a234 Author: Carter Kozak <cko...@apache.org> Authored: Fri Apr 13 20:15:27 2018 -0700 Committer: Carter Kozak <cko...@apache.org> Committed: Tue Apr 24 09:16:17 2018 -0400 ---------------------------------------------------------------------- .../org/apache/logging/log4j/core/impl/Log4jLogEvent.java | 2 +- .../apache/logging/log4j/core/impl/MutableLogEvent.java | 2 +- .../logging/log4j/core/impl/MutableLogEventTest.java | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/bc4bf6df/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java index 2fe5a9b..6ee9e1c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java @@ -538,7 +538,7 @@ public class Log4jLogEvent implements LogEvent { } public void makeMessageImmutable() { - message = new SimpleMessage(message.getFormattedMessage()); + message = new MementoMessage(message.getFormattedMessage(), message.getFormat(), message.getParameters()); } @Override http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/bc4bf6df/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java index 03918dd..00b0420 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java @@ -499,6 +499,6 @@ public class MutableLogEvent implements LogEvent, ReusableMessage, ParameterVisi } private Message getNonNullImmutableMessage() { - return message != null ? message : new SimpleMessage(String.valueOf(messageText)); + return message != null ? message : new MementoMessage(String.valueOf(messageText), messageFormat, getParameters()); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/bc4bf6df/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java index 655b561..9db00fa 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java @@ -142,6 +142,16 @@ public class MutableLogEventTest { assertEquals("format", "msg in a {}", memento.getFormat()); assertEquals("formatted", "msg in a bottle", memento.getFormattedMessage()); assertEquals("parameters", new String[] {"bottle"}, memento.getParameters()); + + Message eventMementoMessage = mutable.createMemento().getMessage(); + assertEquals("format", "msg in a {}", eventMementoMessage.getFormat()); + assertEquals("formatted", "msg in a bottle", eventMementoMessage.getFormattedMessage()); + assertEquals("parameters", new String[] {"bottle"}, eventMementoMessage.getParameters()); + + Message log4JLogEventMessage = new Log4jLogEvent.Builder(mutable).build().getMessage(); + assertEquals("format", "msg in a {}", log4JLogEventMessage.getFormat()); + assertEquals("formatted", "msg in a bottle", log4JLogEventMessage.getFormattedMessage()); + assertEquals("parameters", new String[] {"bottle"}, log4JLogEventMessage.getParameters()); } @Test