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; }
