You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2022/02/22 08:56:41 UTC
[logging-log4j2] 02/02: LOG4J2-3393 Make TextEncoderHelper.encodeText() fallbacks JIT-friendly.
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch LOG4J2-3393
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 6d22a0841cc09e769b301bf38e41c5e8d70f3e43
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Tue Feb 22 09:56:20 2022 +0100
LOG4J2-3393 Make TextEncoderHelper.encodeText() fallbacks JIT-friendly.
---
.../log4j/core/layout/StringBuilderEncoder.java | 2 +-
.../log4j/layout/template/json/JsonTemplateLayout.java | 18 +++++++++++++-----
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/StringBuilderEncoder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/StringBuilderEncoder.java
index d300a74..9af3316 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/StringBuilderEncoder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/StringBuilderEncoder.java
@@ -89,7 +89,7 @@ public class StringBuilderEncoder implements Encoder<StringBuilder> {
return threadLocalState;
}
- private void logEncodeTextException(final Exception ex, final StringBuilder text) {
+ private static void logEncodeTextException(final Exception ex, final StringBuilder text) {
StatusLogger.getLogger().error("Recovering from StringBuilderEncoder.encode('{}') error: {}", text, ex, ex);
}
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
index 5e36817..4266dfc 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
@@ -240,14 +240,22 @@ public class JsonTemplateLayout implements StringLayout {
try {
TextEncoderHelper.encodeText(charsetEncoder, charBuffer, byteBuffer, source, destination);
} catch (final Exception error) {
- StatusLogger
- .getLogger()
- .error("TextEncoderHelper.encodeText() failure", error);
- final byte[] bytes = source.toString().getBytes(charset);
- destination.writeBytes(bytes, 0, bytes.length);
+ fallbackEncode(charset, source, destination, error);
}
}
+ private /* for JIT-ergonomics: */ static void fallbackEncode(
+ final Charset charset,
+ final StringBuilder source,
+ final ByteBufferDestination destination,
+ final Exception error) {
+ StatusLogger
+ .getLogger()
+ .error("TextEncoderHelper.encodeText() failure", error);
+ final byte[] bytes = source.toString().getBytes(charset);
+ destination.writeBytes(bytes, 0, bytes.length);
+ }
+
}
@Override