You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2017/01/09 09:13:08 UTC
logging-log4j2 git commit: LOG4J-1724 Ensure that GelfLayout is still
garbage-free when no substitution
Repository: logging-log4j2
Updated Branches:
refs/heads/master caf8347a2 -> e38df78e8
LOG4J-1724 Ensure that GelfLayout is still garbage-free when no substitution
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/e38df78e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/e38df78e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/e38df78e
Branch: refs/heads/master
Commit: e38df78e876b43cbd9f8c612e8f434768d690ee4
Parents: caf8347
Author: Mikael St�ldal <mi...@magine.com>
Authored: Mon Jan 9 10:11:03 2017 +0100
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Mon Jan 9 10:11:03 2017 +0100
----------------------------------------------------------------------
.../org/apache/logging/log4j/core/layout/GelfLayout.java | 8 +++++++-
log4j-core/src/test/resources/gcFreeLogging.xml | 4 +++-
src/site/xdoc/manual/garbagefree.xml | 3 ++-
3 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e38df78e/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 b5a7ff4..0c757aa 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
@@ -352,7 +352,9 @@ public final class GelfLayout extends AbstractStringLayout {
builder.append(QU);
JsonUtils.quoteAsString(additionalField.getKey(), builder);
builder.append("\":\"");
- final String value = strSubstitutor.replace(event, additionalField.getValue());
+ final String value = valueNeedsLookup(additionalField.getValue())
+ ? strSubstitutor.replace(event, additionalField.getValue())
+ : additionalField.getValue();
JsonUtils.quoteAsString(toNullSafeString(value), builder);
builder.append(QC);
}
@@ -390,6 +392,10 @@ public final class GelfLayout extends AbstractStringLayout {
return builder;
}
+ private static boolean valueNeedsLookup(final String value) {
+ return value != null && value.contains("${");
+ }
+
private static final TriConsumer<String, Object, StringBuilder> WRITE_KEY_VALUES_INTO = new TriConsumer<String, Object, StringBuilder>() {
@Override
public void accept(final String key, final Object value, final StringBuilder stringBuilder) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e38df78e/log4j-core/src/test/resources/gcFreeLogging.xml
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/resources/gcFreeLogging.xml b/log4j-core/src/test/resources/gcFreeLogging.xml
index 0066045..380c128 100644
--- a/log4j-core/src/test/resources/gcFreeLogging.xml
+++ b/log4j-core/src/test/resources/gcFreeLogging.xml
@@ -66,7 +66,9 @@
</PatternLayout>
</MemoryMappedFile>
<RandomAccessFile name="RandomAccessFileGelf" fileName="target/gcfree.json" immediateFlush="false" append="false">
- <GelfLayout compressionType="OFF"/>
+ <GelfLayout compressionType="OFF">
+ <KeyValuePair key="foo" value="FOO"/>
+ </GelfLayout>
</RandomAccessFile>
</Appenders>
<Loggers>
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e38df78e/src/site/xdoc/manual/garbagefree.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/manual/garbagefree.xml b/src/site/xdoc/manual/garbagefree.xml
index 054a0e0..fe6c681 100644
--- a/src/site/xdoc/manual/garbagefree.xml
+++ b/src/site/xdoc/manual/garbagefree.xml
@@ -183,7 +183,8 @@
<h4>Supported Layouts</h4>
<h5>GelfLayout</h5>
- <p>GelfLayout is garbage-free when used with compressionType="OFF".</p>
+ <p>GelfLayout is garbage-free when used with compressionType="OFF",
+ as long as no additional field contains '${' (variable substitution).</p>
<h5>PatternLayout</h5>
<p>