You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/02/17 13:27:10 UTC
logging-log4j2 git commit: LOG4J2-1270 introduce threadlocals
Repository: logging-log4j2
Updated Branches:
refs/heads/master dd88029aa -> d40bee3a0
LOG4J2-1270 introduce threadlocals
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d40bee3a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d40bee3a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d40bee3a
Branch: refs/heads/master
Commit: d40bee3a02f36cf75aed085cebd71075c9c08ae2
Parents: dd88029
Author: rpopma <rp...@apache.org>
Authored: Wed Feb 17 21:27:07 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Wed Feb 17 21:27:07 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/perf/nogc/ClassicLogger.java | 3 +-
.../logging/log4j/perf/nogc/NoGcMessage.java | 51 +++++++++++++-------
2 files changed, 36 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d40bee3a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
index 6fdb43b..81c382e 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
@@ -23,7 +23,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage;
import java.nio.charset.StandardCharsets;
/**
- * Logger with varargs methods, ParameterizedMessage and PatternLayout("%m").
+ * Logger with varargs methods, ParameterizedMessage and Pat.
*/
public class ClassicLogger extends AbstractLogger {
@@ -34,5 +34,6 @@ public class ClassicLogger extends AbstractLogger {
public void log(String message, Object... params) {
log(new ParameterizedMessage(message, params));
+ //log(new NoGcMessage(16).set(message, params[0], params[1], params[2], params[3]));
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d40bee3a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
index 53392e5..af5d115 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/NoGcMessage.java
@@ -24,44 +24,61 @@ import java.util.Arrays;
* Reusable Message..
*/
public class NoGcMessage implements Message {
- private Object[] params = new Object[10];
- private int paramCount;
- private StringBuilder buffer = new StringBuilder(2048);
+ class InternalState {
+ private Object[] params = new Object[10];
+ private int paramCount;
+ private StringBuilder buffer = new StringBuilder(2048);
+
+ public Object[] getParamsCopy() {
+ return Arrays.copyOf(params, paramCount);
+ }
+ }
+
+ private ThreadLocal<InternalState> state = new ThreadLocal<>();
public NoGcMessage() {
}
+ private InternalState getState() {
+ InternalState result = state.get();
+ if (result == null) {
+ result = new InternalState();
+ state.set(result);
+ }
+ return result;
+ }
+
public StringBuilder get() {
- return buffer;
+ return getState().buffer;
}
- public StringBuilder set(String message, Object p1, Object p2, Object p3, Object p4) {
- params[0] = p1;
- params[1] = p2;
- params[2] = p3;
- params[3] = p4;
- paramCount = 4;
+ public void set(String message, Object p1, Object p2, Object p3, Object p4) {
+ InternalState state = getState();
+ state.params[0] = p1;
+ state.params[1] = p2;
+ state.params[2] = p3;
+ state.params[3] = p4;
+ state.paramCount = 4;
int current = 0;
- buffer.setLength(0);
+ state.buffer.setLength(0);
for (int i = 0; i < message.length() - 1; i++) {
char c = message.charAt(i);
if (c == '{' && message.charAt(i + 1) == '}') {
- buffer.append(params[current++]);
+ state.buffer.append(state.params[current++]);
i++;
} else {
- buffer.append(c);
+ state.buffer.append(c);
}
}
char c = message.charAt(message.length() - 1);
if (c != '}') {
- buffer.append(c);
+ state.buffer.append(c);
}
- return buffer;
}
@Override
public String getFormattedMessage() {
- return buffer.toString(); // not called by NoGcLayout
+ return getState().buffer.toString(); // not called by NoGcLayout
}
@Override
@@ -71,7 +88,7 @@ public class NoGcMessage implements Message {
@Override
public Object[] getParameters() {
- return Arrays.copyOf(params, paramCount);
+ return getState().getParamsCopy();
}
@Override
Re: logging-log4j2 git commit: LOG4J2-1270 introduce threadlocals
Posted by Remko Popma <re...@gmail.com>.
Thanks!
On Thu, Feb 18, 2016 at 12:21 AM, Gary Gregory <ga...@gmail.com>
wrote:
>
> ---------- Forwarded message ----------
> From: <rp...@apache.org>
> Date: Wed, Feb 17, 2016 at 4:27 AM
> Subject: logging-log4j2 git commit: LOG4J2-1270 introduce threadlocals
> To: commits@logging.apache.org
>
>
> Repository: logging-log4j2
> Updated Branches:
> refs/heads/master dd88029aa -> d40bee3a0
>
>
> LOG4J2-1270 introduce threadlocals
>
>
> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d40bee3a
> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d40bee3a
> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d40bee3a
>
> Branch: refs/heads/master
> Commit: d40bee3a02f36cf75aed085cebd71075c9c08ae2
> Parents: dd88029
> Author: rpopma <rp...@apache.org>
> Authored: Wed Feb 17 21:27:07 2016 +0900
> Committer: rpopma <rp...@apache.org>
> Committed: Wed Feb 17 21:27:07 2016 +0900
>
> ----------------------------------------------------------------------
> .../logging/log4j/perf/nogc/ClassicLogger.java | 3 +-
> .../logging/log4j/perf/nogc/NoGcMessage.java | 51 +++++++++++++-------
> 2 files changed, 36 insertions(+), 18 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d40bee3a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
> ----------------------------------------------------------------------
> diff --git
> a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
> b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
> index 6fdb43b..81c382e 100644
> ---
> a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
> +++
> b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
> @@ -23,7 +23,7 @@ import
> org.apache.logging.log4j.message.ParameterizedMessage;
> import java.nio.charset.StandardCharsets;
>
> /**
> - * Logger with varargs methods, ParameterizedMessage and
> PatternLayout("%m").
> + * Logger with varargs methods, ParameterizedMessage and Pat.
> */
>
> Is this a typo?
>
> Gary
>
>
>
Fwd: logging-log4j2 git commit: LOG4J2-1270 introduce threadlocals
Posted by Gary Gregory <ga...@gmail.com>.
---------- Forwarded message ----------
From: <rp...@apache.org>
Date: Wed, Feb 17, 2016 at 4:27 AM
Subject: logging-log4j2 git commit: LOG4J2-1270 introduce threadlocals
To: commits@logging.apache.org
Repository: logging-log4j2
Updated Branches:
refs/heads/master dd88029aa -> d40bee3a0
LOG4J2-1270 introduce threadlocals
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit:
http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d40bee3a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d40bee3a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d40bee3a
Branch: refs/heads/master
Commit: d40bee3a02f36cf75aed085cebd71075c9c08ae2
Parents: dd88029
Author: rpopma <rp...@apache.org>
Authored: Wed Feb 17 21:27:07 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Wed Feb 17 21:27:07 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/perf/nogc/ClassicLogger.java | 3 +-
.../logging/log4j/perf/nogc/NoGcMessage.java | 51 +++++++++++++-------
2 files changed, 36 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d40bee3a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
----------------------------------------------------------------------
diff --git
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
index 6fdb43b..81c382e 100644
---
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
+++
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/ClassicLogger.java
@@ -23,7 +23,7 @@ import
org.apache.logging.log4j.message.ParameterizedMessage;
import java.nio.charset.StandardCharsets;
/**
- * Logger with varargs methods, ParameterizedMessage and
PatternLayout("%m").
+ * Logger with varargs methods, ParameterizedMessage and Pat.
*/
Is this a typo?
Gary