Index: src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java
===================================================================
--- src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java (revision 1629)
+++ src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java (working copy)
@@ -10,20 +10,19 @@
package ch.qos.logback.classic.spi;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import org.slf4j.MDC;
+import org.slf4j.Marker;
+import org.slf4j.helpers.MessageFormatter;
+import org.slf4j.impl.LogbackMDCAdapter;
+
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Map;
-import org.slf4j.MDC;
-import org.slf4j.Marker;
-import org.slf4j.helpers.MessageFormatter;
-import org.slf4j.impl.LogbackMDCAdapter;
-
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-
/**
* The internal representation of logging events. When an affirmative decision
* is made to log then a LoggingEvent
instance is created. This
@@ -113,12 +112,8 @@
// bug 85 (we previously failed to set this.argumentArray)
this.argumentArray = argArray;
-
- if (argArray != null) {
- formattedMessage = MessageFormatter.arrayFormat(message, argArray);
- } else {
- formattedMessage = message;
- }
+
+ // formattedMessage is initialized lazily in getFormattedMessage
timeStamp = System.currentTimeMillis();
// the case is ugly but under the circumstances acceptable
@@ -236,7 +231,7 @@
*
* @return The time as measured when this class was loaded into memory.
*/
- public static final long getStartTime() {
+ public static long getStartTime() {
return startTime;
}
@@ -276,6 +271,14 @@
}
public String getFormattedMessage() {
+ if(formattedMessage == null) {
+ if (argumentArray != null) {
+ formattedMessage = MessageFormatter.arrayFormat(message, argumentArray);
+ } else {
+ formattedMessage = message;
+ }
+ }
+
return formattedMessage;
}
@@ -284,6 +287,17 @@
}
private void writeObject(ObjectOutputStream out) throws IOException {
+ // fix for bug #100 & bug #118
+ if(argumentArray!=null) {
+ for(int i=0;i