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