[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

Reply via email to