You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2016/03/08 17:35:43 UTC
[03/10] logging-log4j2 git commit: LOG4J2-1296 bugfix in
ReusableParameterizedMessage: calling getFormattedMessage() multiple times
should return correct results
LOG4J2-1296 bugfix in ReusableParameterizedMessage: calling getFormattedMessage() multiple times should return correct results
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/98ded701
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/98ded701
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/98ded701
Branch: refs/heads/gelf-layout-gc-free
Commit: 98ded70186d34bfc664094d5d120b63895ba9668
Parents: f157cc2
Author: rpopma <rp...@apache.org>
Authored: Wed Mar 9 00:58:31 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Wed Mar 9 00:58:31 2016 +1100
----------------------------------------------------------------------
.../message/ReusableParameterizedMessage.java | 23 ++++++++++++--------
1 file changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/98ded701/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index 7d2b1d5..bd6205f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -31,8 +31,8 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
public class ReusableParameterizedMessage implements ReusableMessage {
private static final long serialVersionUID = 7800075879295123856L;
+ private static ThreadLocal<StringBuilder> buffer = new ThreadLocal<>();
- private final StringBuilder buffer = new StringBuilder(2048);
private String messagePattern;
private int argCount;
private transient Object[] varargs;
@@ -55,8 +55,6 @@ public class ReusableParameterizedMessage implements ReusableMessage {
private void init(String messagePattern, int argCount, Object[] paramArray) {
this.varargs = null;
- this.buffer.setLength(0);
-
this.messagePattern = messagePattern;
this.argCount= argCount;
int usedCount = ParameterFormatter.countArgumentPlaceholders(messagePattern);
@@ -70,10 +68,6 @@ public class ReusableParameterizedMessage implements ReusableMessage {
}
}
- public StringBuilder get() {
- return buffer;
- }
-
ReusableParameterizedMessage set(String messagePattern, Object... arguments) {
init(messagePattern, arguments == null ? 0 : arguments.length, arguments);
varargs = arguments;
@@ -227,8 +221,19 @@ public class ReusableParameterizedMessage implements ReusableMessage {
*/
@Override
public String getFormattedMessage() {
- formatTo(buffer);
- return buffer.toString();
+ final StringBuilder sb = getBuffer();
+ formatTo(sb);
+ return sb.toString();
+ }
+
+ private StringBuilder getBuffer() {
+ StringBuilder result = buffer.get();
+ if (result == null) {
+ result = new StringBuilder(Math.min(512, messagePattern.length() * 2));
+ buffer.set(result);
+ }
+ result.setLength(0);
+ return result;
}
@Override