You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2015/09/22 10:07:05 UTC
logging-log4j2 git commit: [LOG4J2-1125] Reuse StringBuilder to
improve performance for PatternLayout and other String-based layouts: CSV,
GELF, HTML, RFC524, Syslog.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 397a04c39 -> 875f78b81
[LOG4J2-1125] Reuse StringBuilder to improve performance for
PatternLayout and other String-based layouts: CSV, GELF, HTML, RFC524,
Syslog.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/875f78b8
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/875f78b8
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/875f78b8
Branch: refs/heads/master
Commit: 875f78b81c3d1849689482998149988976e7b664
Parents: 397a04c
Author: ggregory <gg...@apache.org>
Authored: Tue Sep 22 01:07:02 2015 -0700
Committer: ggregory <gg...@apache.org>
Committed: Tue Sep 22 01:07:02 2015 -0700
----------------------------------------------------------------------
.../apache/logging/log4j/core/layout/CsvLogEventLayout.java | 4 +++-
.../apache/logging/log4j/core/layout/CsvParameterLayout.java | 4 +++-
.../java/org/apache/logging/log4j/core/layout/GelfLayout.java | 4 +++-
.../java/org/apache/logging/log4j/core/layout/HtmlLayout.java | 6 +++---
.../org/apache/logging/log4j/core/layout/Rfc5424Layout.java | 4 +++-
.../org/apache/logging/log4j/core/layout/SyslogLayout.java | 4 +++-
6 files changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
index a572e09..9fb36b0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvLogEventLayout.java
@@ -42,6 +42,8 @@ public class CsvLogEventLayout extends AbstractCsvLayout {
private static final long serialVersionUID = 1L;
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
public static CsvLogEventLayout createDefaultLayout() {
return new CsvLogEventLayout(Charset.forName(DEFAULT_CHARSET), CSVFormat.valueOf(DEFAULT_FORMAT), null, null);
}
@@ -76,7 +78,7 @@ public class CsvLogEventLayout extends AbstractCsvLayout {
@Override
public String toSerializable(final LogEvent event) {
- final StringBuilder buffer = new StringBuilder(1024);
+ final StringBuilder buffer = prepareStringBuilder(strBuilder);
try {
// Revisit when 1.3 is out so that we do not need to create a new
// printer for each event.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
index 69c194b..bb0bc6e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/CsvParameterLayout.java
@@ -51,6 +51,8 @@ public class CsvParameterLayout extends AbstractCsvLayout {
private static final long serialVersionUID = 1L;
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
public static AbstractCsvLayout createDefaultLayout() {
return new CsvParameterLayout(Charset.forName(DEFAULT_CHARSET), CSVFormat.valueOf(DEFAULT_FORMAT), null, null);
}
@@ -87,7 +89,7 @@ public class CsvParameterLayout extends AbstractCsvLayout {
public String toSerializable(final LogEvent event) {
final Message message = event.getMessage();
final Object[] parameters = message.getParameters();
- final StringBuilder buffer = new StringBuilder(1024);
+ final StringBuilder buffer = prepareStringBuilder(strBuilder);
try {
// Revisit when 1.3 is out so that we do not need to create a new
// printer for each event.
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/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 076c5c1..6433f91 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
@@ -105,6 +105,8 @@ public final class GelfLayout extends AbstractStringLayout {
private static final long serialVersionUID = 1L;
private static final BigDecimal TIME_DIVISOR = new BigDecimal(1000);
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
@PluginFactory
public static GelfLayout createLayout(
//@formatter:off
@@ -190,7 +192,7 @@ public final class GelfLayout extends AbstractStringLayout {
@Override
public String toSerializable(final LogEvent event) {
- final StringBuilder builder = new StringBuilder(256);
+ final StringBuilder builder = prepareStringBuilder(strBuilder);
final JsonStringEncoder jsonEncoder = JsonStringEncoder.getInstance();
builder.append('{');
builder.append("\"version\":\"1.1\",");
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
index 873da2e..526b33a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/HtmlLayout.java
@@ -51,8 +51,6 @@ public final class HtmlLayout extends AbstractStringLayout {
private static final long serialVersionUID = 1L;
- private static final int BUF_SIZE = 256;
-
private static final String TRACE_PREFIX = "<br /> ";
private static final String REGEXP = Constants.LINE_SEPARATOR.equals("\n") ? "\n" : Constants.LINE_SEPARATOR + "|\n";
@@ -65,6 +63,8 @@ public final class HtmlLayout extends AbstractStringLayout {
private final long jvmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime();
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
// Print no location info by default
private final boolean locationInfo;
@@ -131,7 +131,7 @@ public final class HtmlLayout extends AbstractStringLayout {
*/
@Override
public String toSerializable(final LogEvent event) {
- final StringBuilder sbuf = new StringBuilder(BUF_SIZE);
+ final StringBuilder sbuf = prepareStringBuilder(strBuilder);
sbuf.append(Constants.LINE_SEPARATOR).append("<tr>").append(Constants.LINE_SEPARATOR);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
index fa1d493..e062798 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
@@ -94,6 +94,8 @@ public final class Rfc5424Layout extends AbstractStringLayout {
private static final String COMPONENT_KEY = "RFC5424-Converter";
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
private final Facility facility;
private final String defaultId;
private final int enterpriseNumber;
@@ -264,7 +266,7 @@ public final class Rfc5424Layout extends AbstractStringLayout {
*/
@Override
public String toSerializable(final LogEvent event) {
- final StringBuilder buf = new StringBuilder();
+ final StringBuilder buf = prepareStringBuilder(strBuilder);
appendPriority(buf, event.getLevel());
appendTimestamp(buf, event.getTimeMillis());
appendSpace(buf);
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/875f78b8/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
index 661c855..350e217 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/SyslogLayout.java
@@ -45,6 +45,8 @@ public final class SyslogLayout extends AbstractStringLayout {
private static final long serialVersionUID = 1L;
+ private static ThreadLocal<StringBuilder> strBuilder = newStringBuilderThreadLocal();
+
/**
* Match newlines in a platform-independent manner.
*/
@@ -78,7 +80,7 @@ public final class SyslogLayout extends AbstractStringLayout {
*/
@Override
public String toSerializable(final LogEvent event) {
- final StringBuilder buf = new StringBuilder();
+ final StringBuilder buf = prepareStringBuilder(strBuilder);
buf.append('<');
buf.append(Priority.getPriority(facility, event.getLevel()));