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">