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