Repository: logging-log4j2
Updated Branches:
  refs/heads/gelf-layout-efficiency [created] f99ef5250


WIP


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/482abdd6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/482abdd6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/482abdd6

Branch: refs/heads/gelf-layout-efficiency
Commit: 482abdd62ab2dbddbedface4d027a8f110a803d8
Parents: a413269
Author: Mikael StÃ¥ldal <[email protected]>
Authored: Tue Mar 22 14:33:45 2016 +0100
Committer: Mikael StÃ¥ldal <[email protected]>
Committed: Tue Mar 22 14:33:45 2016 +0100

----------------------------------------------------------------------
 .../log4j/core/layout/AbstractStringLayout.java     | 16 ++++++++++++++++
 .../logging/log4j/core/layout/GelfLayout.java       |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/482abdd6/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
index 84dbd69..4ff489e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
@@ -24,6 +24,8 @@ import org.apache.logging.log4j.core.util.StringEncoder;
 import org.apache.logging.log4j.util.Strings;
 
 import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 
@@ -164,6 +166,20 @@ public abstract class AbstractStringLayout extends 
AbstractLayout<String> implem
         }
     }
 
+    protected byte[] getBytes(final CharSequence cseq) {
+        if (useCustomEncoding) { // rely on branch prediction to eliminate 
this check if false
+            return StringEncoder.encodeSingleByteChars(cseq);
+        }
+        ByteBuffer byteBuffer = charset.encode(CharBuffer.wrap(cseq));
+        if (byteBuffer.hasArray()) {
+            return byteBuffer.array();
+        } else {
+            byte[] bytes = new byte[byteBuffer.remaining()];
+            byteBuffer.get(bytes);
+            return bytes;
+        }
+    }
+
     @Override
     public Charset getCharset() {
         return charset;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/482abdd6/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 7942ebb..de48431 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -144,7 +144,7 @@ public final class GelfLayout extends AbstractStringLayout {
     @Override
     public byte[] toByteArray(final LogEvent event) {
         StringBuilder text = toText(event, getStringBuilder());
-        final byte[] bytes = getBytes(text.toString());
+        final byte[] bytes = getBytes(text);
         return compressionType != CompressionType.OFF && bytes.length > 
compressionThreshold ? compress(bytes) : bytes;
     }
 

Reply via email to