This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch scheduled-for-deletion/gelf-layout-efficiency
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 482abdd62ab2dbddbedface4d027a8f110a803d8
Author: Mikael StÃ¥ldal <[email protected]>
AuthorDate: Tue Mar 22 14:33:45 2016 +0100

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

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 84dbd690fa..4ff489e674 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;
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 7942ebb351..de484310f3 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