You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2017/03/12 16:33:35 UTC

[1/5] logging-log4j2 git commit: Add suffix support for ThrowablePatternConverter

Repository: logging-log4j2
Updated Branches:
  refs/heads/master a11150e51 -> c93c0270e


Add suffix support for ThrowablePatternConverter


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/1cf55b00
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/1cf55b00
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/1cf55b00

Branch: refs/heads/master
Commit: 1cf55b007dc7208594d44f72c99f67e0023b48bb
Parents: 56d05aa
Author: xnslong <xn...@outlook.com>
Authored: Fri Mar 10 00:27:07 2017 +0800
Committer: xnslong <xn...@outlook.com>
Committed: Fri Mar 10 00:41:31 2017 +0800

----------------------------------------------------------------------
 .../core/pattern/ThrowablePatternConverter.java |  9 +++--
 .../pattern/ThrowablePatternConverterTest.java  | 37 ++++++++++++++++++++
 2 files changed, 43 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1cf55b00/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
index 91b6bab..b596361 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
@@ -111,7 +111,8 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
             formatSubShortOption(t, buffer);
         }
         else if (t != null && options.anyLines()) {
-            formatOption(t, buffer);
+            String suffix = getSuffix(event);
+            formatOption(t, suffix, buffer);
         }
     }
 
@@ -166,7 +167,7 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
         }
     }
 
-    private void formatOption(final Throwable throwable, final StringBuilder buffer) {
+    private void formatOption(final Throwable throwable, final String suffix, final StringBuilder buffer) {
         final StringWriter w = new StringWriter();
 
         throwable.printStackTrace(new PrintWriter(w));
@@ -174,12 +175,14 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
         if (len > 0 && !Character.isWhitespace(buffer.charAt(len - 1))) {
             buffer.append(' ');
         }
-        if (!options.allLines() || !Strings.LINE_SEPARATOR.equals(options.getSeparator())) {
+        if (!options.allLines() || !Strings.LINE_SEPARATOR.equals(options.getSeparator()) || Strings.isNotBlank(suffix)) {
             final StringBuilder sb = new StringBuilder();
             final String[] array = w.toString().split(Strings.LINE_SEPARATOR);
             final int limit = options.minLines(array.length) - 1;
             for (int i = 0; i <= limit; ++i) {
                 sb.append(array[i]);
+                sb.append(' ');
+                sb.append(suffix);
                 if (i < limit) {
                     sb.append(options.getSeparator());
                 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1cf55b00/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
index 55aa895..f0903ad 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
+import org.apache.logging.log4j.util.Strings;
 import org.junit.Test;
 
 public class ThrowablePatternConverterTest {
@@ -37,6 +38,16 @@ public class ThrowablePatternConverterTest {
         }
     }
 
+    private boolean everyLineEndsWith(final String text, final String suffix) {
+        String[] lines = text.split(Strings.LINE_SEPARATOR);
+        for (String line: lines) {
+            if (!line.trim().endsWith(suffix)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     /**
      * TODO: Needs better a better exception? NumberFormatException is NOT helpful.
      */
@@ -75,6 +86,32 @@ public class ThrowablePatternConverterTest {
     }
 
     @Test
+    public void testFullWithSuffix() {
+        final String[] options = { "full", "suffix(test suffix)" };
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options);
+        Throwable parent;
+        try {
+            try {
+                throw new NullPointerException("null pointer");
+            } catch (final NullPointerException e) {
+                throw new IllegalArgumentException("IllegalArgument", e);
+            }
+        } catch (final IllegalArgumentException e) {
+            parent = e;
+        }
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setLoggerName("testLogger") //
+                .setLoggerFqcn(this.getClass().getName()) //
+                .setLevel(Level.DEBUG) //
+                .setMessage(new SimpleMessage("test exception")) //
+                .setThrown(parent).build();
+        final StringBuilder sb = new StringBuilder();
+        converter.format(event, sb);
+        final String result = sb.toString();
+        assertTrue("Each line of full stack trace should end with the specified suffix", everyLineEndsWith(result, "test suffix"));
+    }
+
+    @Test
     public void testShortClassName() {
         final String packageName = "org.apache.logging.log4j.core.pattern.";
         final String[] options = { "short.className" };


[4/5] logging-log4j2 git commit: Merge commit 'refs/pull/63/head' of https://github.com/apache/logging-log4j2

Posted by ma...@apache.org.
Merge commit 'refs/pull/63/head' of https://github.com/apache/logging-log4j2


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/40f60b73
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/40f60b73
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/40f60b73

Branch: refs/heads/master
Commit: 40f60b738e6f86e07bd48bab0e12b5913928a24c
Parents: a11150e d9c9dd9
Author: Matt Sicker <bo...@gmail.com>
Authored: Sun Mar 12 11:32:06 2017 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Sun Mar 12 11:32:06 2017 -0500

----------------------------------------------------------------------
 .../core/pattern/ThrowablePatternConverter.java | 20 +++++--
 .../pattern/ThrowablePatternConverterTest.java  | 56 ++++++++++++++++++++
 2 files changed, 71 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[5/5] logging-log4j2 git commit: Add changelog entry for LOG4J2-1843

Posted by ma...@apache.org.
Add changelog entry for LOG4J2-1843


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c93c0270
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c93c0270
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c93c0270

Branch: refs/heads/master
Commit: c93c0270e2998f29c033d312192481386e1d4149
Parents: 40f60b7
Author: Matt Sicker <bo...@gmail.com>
Authored: Sun Mar 12 11:33:35 2017 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Sun Mar 12 11:33:35 2017 -0500

----------------------------------------------------------------------
 src/changes/changes.xml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c93c0270/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 87f98f4..33c4fa2 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -40,9 +40,12 @@
       <action issue="LOG4J2-1845" dev="mikes" type="fix">
         Handle when LogEvent.getLoggerName() returns null in KafkaAppender.
       </action>
-      <action issue="LOG4J2-1838" dev="mattsicker" type="add" due-to="Zilong Song">
+      <action issue="LOG4J2-1843" dev="mattsicker" type="add" due-to="Zilong Song">
         Add support for appending common suffix to each line of throwable stack trace.
       </action>
+      <action issue="LOG4J2-1838" dev="mattsicker" type="add" due-to="Zilong Song">
+        Add support for appending common suffix to each line of extended and root throwable stack trace.
+      </action>
       <action issue="LOG4J2-1827" dev="rgoers" type="update">
         Move integration tests to their own module to speed up build.
       </action>


[2/5] logging-log4j2 git commit: Append suffix when it is short

Posted by ma...@apache.org.
Append suffix when it is short


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/54b6c88d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/54b6c88d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/54b6c88d

Branch: refs/heads/master
Commit: 54b6c88de8ef36fa23c037e389ed958c081104fe
Parents: 1cf55b0
Author: xnslong <xn...@outlook.com>
Authored: Fri Mar 10 00:53:17 2017 +0800
Committer: xnslong <xn...@outlook.com>
Committed: Fri Mar 10 00:58:30 2017 +0800

----------------------------------------------------------------------
 .../core/pattern/ThrowablePatternConverter.java | 12 ++--
 .../pattern/ThrowablePatternConverterTest.java  | 71 +++++++++++++-------
 2 files changed, 53 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/54b6c88d/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
index b596361..bcd631a 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
@@ -108,11 +108,10 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
         final Throwable t = event.getThrown();
 
         if (isSubShortOption()) {
-            formatSubShortOption(t, buffer);
+            formatSubShortOption(t, getSuffix(event), buffer);
         }
         else if (t != null && options.anyLines()) {
-            String suffix = getSuffix(event);
-            formatOption(t, suffix, buffer);
+            formatOption(t, getSuffix(event), buffer);
         }
     }
 
@@ -125,7 +124,7 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
                 ThrowableFormatOptions.CLASS_NAME.equalsIgnoreCase(rawOption);
     }
 
-    private void formatSubShortOption(final Throwable t, final StringBuilder buffer) {
+    private void formatSubShortOption(final Throwable t, final String suffix, final StringBuilder buffer) {
         StackTraceElement[] trace;
         StackTraceElement throwingMethod = null;
         int len;
@@ -164,6 +163,11 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
                 buffer.append(' ');
             }
             buffer.append(toAppend);
+
+            if (Strings.isNotBlank(suffix)) {
+                buffer.append(' ');
+                buffer.append(suffix);
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/54b6c88d/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
index f0903ad..2704d86 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
@@ -86,32 +86,6 @@ public class ThrowablePatternConverterTest {
     }
 
     @Test
-    public void testFullWithSuffix() {
-        final String[] options = { "full", "suffix(test suffix)" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options);
-        Throwable parent;
-        try {
-            try {
-                throw new NullPointerException("null pointer");
-            } catch (final NullPointerException e) {
-                throw new IllegalArgumentException("IllegalArgument", e);
-            }
-        } catch (final IllegalArgumentException e) {
-            parent = e;
-        }
-        final LogEvent event = Log4jLogEvent.newBuilder() //
-                .setLoggerName("testLogger") //
-                .setLoggerFqcn(this.getClass().getName()) //
-                .setLevel(Level.DEBUG) //
-                .setMessage(new SimpleMessage("test exception")) //
-                .setThrown(parent).build();
-        final StringBuilder sb = new StringBuilder();
-        converter.format(event, sb);
-        final String result = sb.toString();
-        assertTrue("Each line of full stack trace should end with the specified suffix", everyLineEndsWith(result, "test suffix"));
-    }
-
-    @Test
     public void testShortClassName() {
         final String packageName = "org.apache.logging.log4j.core.pattern.";
         final String[] options = { "short.className" };
@@ -222,4 +196,49 @@ public class ThrowablePatternConverterTest {
         assertEquals("The method names should be same", "testShortMethodName", result);
     }
 
+    @Test
+    public void testFullWithSuffix() {
+        final String[] options = { "full", "suffix(test suffix)" };
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options);
+        Throwable parent;
+        try {
+            try {
+                throw new NullPointerException("null pointer");
+            } catch (final NullPointerException e) {
+                throw new IllegalArgumentException("IllegalArgument", e);
+            }
+        } catch (final IllegalArgumentException e) {
+            parent = e;
+        }
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setLoggerName("testLogger") //
+                .setLoggerFqcn(this.getClass().getName()) //
+                .setLevel(Level.DEBUG) //
+                .setMessage(new SimpleMessage("test exception")) //
+                .setThrown(parent).build();
+        final StringBuilder sb = new StringBuilder();
+        converter.format(event, sb);
+        final String result = sb.toString();
+        assertTrue("Each line of full stack trace should end with the specified suffix", everyLineEndsWith(result, "test suffix"));
+    }
+
+    @Test
+    public void testShortOptionWithSuffix() {
+        final String packageName = "org.apache.logging.log4j.core.pattern.";
+        final String[] options = { "short.className", "suffix(test suffix)" };
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options);
+        final Throwable cause = new NullPointerException("null pointer");
+        final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
+        final LogEvent event = Log4jLogEvent.newBuilder() //
+                .setLoggerName("testLogger") //
+                .setLoggerFqcn(this.getClass().getName()) //
+                .setLevel(Level.DEBUG) //
+                .setMessage(new SimpleMessage("test exception")) //
+                .setThrown(parent).build();
+        final StringBuilder sb = new StringBuilder();
+        converter.format(event, sb);
+        final String result = sb.toString();
+        assertTrue("Each line should end with suffix", everyLineEndsWith(result, "test suffix"));
+    }
+
 }


[3/5] logging-log4j2 git commit: When suffix is blank, it won't be appended

Posted by ma...@apache.org.
When suffix is blank, it won't be appended


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/d9c9dd9a
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/d9c9dd9a
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/d9c9dd9a

Branch: refs/heads/master
Commit: d9c9dd9aa8c0eb3ef422fb7f942f804b21d8dbb7
Parents: 54b6c88
Author: xnslong <xn...@outlook.com>
Authored: Fri Mar 10 01:02:44 2017 +0800
Committer: xnslong <xn...@outlook.com>
Committed: Fri Mar 10 01:02:44 2017 +0800

----------------------------------------------------------------------
 .../logging/log4j/core/pattern/ThrowablePatternConverter.java | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d9c9dd9a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
index bcd631a..da20713 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverter.java
@@ -183,10 +183,13 @@ public class ThrowablePatternConverter extends LogEventPatternConverter {
             final StringBuilder sb = new StringBuilder();
             final String[] array = w.toString().split(Strings.LINE_SEPARATOR);
             final int limit = options.minLines(array.length) - 1;
+            final boolean suffixNotBlank = Strings.isNotBlank(suffix);
             for (int i = 0; i <= limit; ++i) {
                 sb.append(array[i]);
-                sb.append(' ');
-                sb.append(suffix);
+                if (suffixNotBlank) {
+                    sb.append(' ');
+                    sb.append(suffix);
+                }
                 if (i < limit) {
                     sb.append(options.getSeparator());
                 }