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 2021/11/01 20:50:41 UTC

[logging-log4j2] branch release-2.x updated: Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.

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

vy pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 63886a5  Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.
63886a5 is described below

commit 63886a590b6bd4eb98a3e03ab843042b9fd58b91
Author: Volkan Yazici <vo...@yazi.ci>
AuthorDate: Mon Nov 1 21:49:35 2021 +0100

    Prefer thread-local-based StringBuilder encoder in JsonTemplateLayout, whenever possible.
---
 .../log4j/layout/template/json/JsonTemplateLayout.java      | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

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 59336c8..d5310eb 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
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.layout.ByteBufferDestination;
 import org.apache.logging.log4j.core.layout.Encoder;
 import org.apache.logging.log4j.core.layout.LockingStringBuilderEncoder;
+import org.apache.logging.log4j.core.layout.StringBuilderEncoder;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.core.util.StringEncoder;
 import org.apache.logging.log4j.layout.template.json.resolver.EventResolverContext;
@@ -203,10 +204,14 @@ public class JsonTemplateLayout implements StringLayout {
             final JsonWriter jsonWriter) {
         return () -> {
             final JsonWriter clonedJsonWriter = jsonWriter.clone();
-            final Encoder<StringBuilder> encoder =
-                    Constants.ENABLE_DIRECT_ENCODERS
-                            ? new LockingStringBuilderEncoder(charset)
-                            : null;
+            final Encoder<StringBuilder> encoder;
+            if (Constants.ENABLE_DIRECT_ENCODERS) {
+                encoder = Constants.ENABLE_THREADLOCALS
+                        ? new StringBuilderEncoder(charset)
+                        : new LockingStringBuilderEncoder(charset);
+            } else {
+                encoder = null;
+            }
             return new Context(clonedJsonWriter, encoder);
         };
     }