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 2017/10/12 21:43:56 UTC
logging-log4j2 git commit: [LOG4J2-1216] Nested pattern layout
options broken. Apply slightly tweaked patch for formatting. Fix hang and
more tests. Closes #116.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 43fb9e1ef -> 52461585e
[LOG4J2-1216] Nested pattern layout options broken. Apply slightly
tweaked patch for formatting. Fix hang and more tests. Closes #116.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/52461585
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/52461585
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/52461585
Branch: refs/heads/master
Commit: 52461585ed34153dc1470acbf2d43aac9bc81944
Parents: 43fb9e1
Author: GFriedrich <no...@github.com>
Authored: Thu Oct 12 15:43:53 2017 -0600
Committer: Gary Gregory <gg...@apache.org>
Committed: Thu Oct 12 15:43:53 2017 -0600
----------------------------------------------------------------------
.../log4j/core/pattern/PatternParser.java | 8 ++++++-
.../log4j/core/pattern/PatternParserTest.java | 25 +++++++++++++-------
src/changes/changes.xml | 2 +-
3 files changed, 24 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/52461585/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
index 5260b11..91c11ec 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
@@ -287,7 +287,13 @@ public final class PatternParser {
} // while
if (depth > 0) { // option not closed, continue with pattern after closing bracket
- return pattern.indexOf('}', start) + 1;
+ i = pattern.lastIndexOf('}');
+ if (i == -1 || i < start) {
+ // if no closing bracket could be found or there is no closing bracket behind the starting
+ // character of our parsing process continue parsing after the first opening bracket
+ return begin;
+ }
+ return i + 1;
}
options.add(pattern.substring(begin, i - 1));
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/52461585/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index 1b68c0d..da93afe 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -161,7 +161,6 @@ public class PatternParserTest {
assertTrue("Expected to end with: " + expected + ". Actual: " + str, str.endsWith(expected));
}
-
@Test
public void testBadPattern() {
final Calendar cal = Calendar.getInstance();
@@ -230,18 +229,12 @@ public class PatternParserTest {
@Test
public void testNanoPatternShort() {
- final List<PatternFormatter> formatters = parser.parse("%N");
- assertNotNull(formatters);
- assertEquals(1, formatters.size());
- assertTrue(formatters.get(0).getConverter() instanceof NanoTimePatternConverter);
+ testFirstConverter("%N", NanoTimePatternConverter.class);
}
@Test
public void testNanoPatternLong() {
- final List<PatternFormatter> formatters = parser.parse("%nano");
- assertNotNull(formatters);
- assertEquals(1, formatters.size());
- assertTrue(formatters.get(0).getConverter() instanceof NanoTimePatternConverter);
+ testFirstConverter("%nano", NanoTimePatternConverter.class);
}
@Test
@@ -348,6 +341,20 @@ public class PatternParserTest {
formatters.get(0).format(event, buf);
final String expected = " 123 ";
assertEquals(expected, buf.toString());
+ }
+
+ @Test
+ public void testMissingClosingBracket() {
+ testFirstConverter("%d{", DatePatternConverter.class);
+ }
+
+ @Test
+ public void testClosingBracketButWrongPlace() {
+ final List<PatternFormatter> formatters = parser.parse("}%d{");
+ assertNotNull(formatters);
+ assertEquals(2, formatters.size());
+ validateConverter(formatters, 0, "Literal");
+ validateConverter(formatters, 1, "Date");
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/52461585/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 24a084e..d989e0e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,7 +62,7 @@
<action issue="LOG4J2-2053" dev="ggregory" type="fix">
Exception java.nio.charset.UnsupportedCharsetException: cp65001 in 2.9.0.
</action>
- <action issue="LOG4J2-1216" dev="ggregory" type="fix" due-to="Thies Wellpott, Barna Zsombor Klara">
+ <action issue="LOG4J2-1216" dev="ggregory" type="fix" due-to="Thies Wellpott, Barna Zsombor Klara, GFriedrich">
Nested pattern layout options broken.
</action>
<action issue="LOG4J2-2070" dev="ggregory" type="fix" due-to="Doug Hughes">