LOG4J2-1293 ObjectMessage, SimpleMessage and ThreadDumpMessage implement StringBuilderFormattable
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d353e3f9 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d353e3f9 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d353e3f9 Branch: refs/heads/LOG4J2-1278-gc-free-logger Commit: d353e3f9c517f058d6f59907484faea5f761234f Parents: 74ee5ac Author: rpopma <[email protected]> Authored: Mon Feb 22 15:40:01 2016 +0900 Committer: rpopma <[email protected]> Committed: Mon Feb 22 15:40:01 2016 +0900 ---------------------------------------------------------------------- .../logging/log4j/message/ObjectMessage.java | 21 +++++++++++++++----- .../logging/log4j/message/SimpleMessage.java | 9 ++++++++- .../log4j/message/ThreadDumpMessage.java | 13 +++++++++--- 3 files changed, 34 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java index ad3dba8..6f18463 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java @@ -21,10 +21,12 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; +import org.apache.logging.log4j.util.StringBuilderFormattable; + /** * Handles messages that contain an Object. */ -public class ObjectMessage implements Message { +public class ObjectMessage implements Message, StringBuilderFormattable { private static final long serialVersionUID = -5903272448334166185L; @@ -33,7 +35,7 @@ public class ObjectMessage implements Message { /** * Creates the ObjectMessage. - * + * * @param obj The Object to format. */ public ObjectMessage(final Object obj) { @@ -42,7 +44,7 @@ public class ObjectMessage implements Message { /** * Returns the formatted object message. - * + * * @return the formatted object message. */ @Override @@ -54,9 +56,18 @@ public class ObjectMessage implements Message { return objectString; } + @Override + public void formatTo(final StringBuilder buffer) { + if (obj instanceof StringBuilderFormattable) { + ((StringBuilderFormattable) obj).formatTo(buffer); + } else { + buffer.append(obj); + } + } + /** * Returns the object formatted using its toString method. - * + * * @return the String representation of the object. */ @Override @@ -66,7 +77,7 @@ public class ObjectMessage implements Message { /** * Returns the object as if it were a parameter. - * + * * @return The object. */ @Override http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java index de3b769..d5c8b88 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java @@ -16,10 +16,12 @@ */ package org.apache.logging.log4j.message; +import org.apache.logging.log4j.util.StringBuilderFormattable; + /** * The simplest possible implementation of Message. It just returns the String given as the constructor argument. */ -public class SimpleMessage implements Message { +public class SimpleMessage implements Message, StringBuilderFormattable { private static final long serialVersionUID = -8398002534962715992L; private final String message; @@ -48,6 +50,11 @@ public class SimpleMessage implements Message { return message; } + @Override + public void formatTo(final StringBuilder buffer) { + buffer.append(message); + } + /** * Returns the message. * @return the message. http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java index b95a1c1..67f0d5f 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java @@ -26,12 +26,13 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; +import org.apache.logging.log4j.util.StringBuilderFormattable; import org.apache.logging.log4j.util.Strings; /** * Captures information about all running Threads. */ -public class ThreadDumpMessage implements Message { +public class ThreadDumpMessage implements Message, StringBuilderFormattable { private static final long serialVersionUID = -1103400781608841088L; @@ -83,7 +84,14 @@ public class ThreadDumpMessage implements Message { if (formattedMessage != null) { return formattedMessage; } - final StringBuilder sb = new StringBuilder(title); + final StringBuilder sb = new StringBuilder(255); + formatTo(sb); + return sb.toString(); + } + + @Override + public void formatTo(final StringBuilder sb) { + sb.append(title); if (title.length() > 0) { sb.append('\n'); } @@ -93,7 +101,6 @@ public class ThreadDumpMessage implements Message { info.printStack(sb, entry.getValue()); sb.append('\n'); } - return sb.toString(); } /**
