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/06/24 23:45:02 UTC

logging-log4j2 git commit: [LOG4J2-1068] Exceptions not logged when using TcpSocketServer + SerializedLayout.

Repository: logging-log4j2
Updated Branches:
  refs/heads/master b80e210f6 -> e7bbeceb1


[LOG4J2-1068] Exceptions not logged when using TcpSocketServer +
SerializedLayout.

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

Branch: refs/heads/master
Commit: e7bbeceb123e60bc84186395e2a29c2a90769886
Parents: b80e210
Author: ggregory <gg...@apache.org>
Authored: Wed Jun 24 14:44:58 2015 -0700
Committer: ggregory <gg...@apache.org>
Committed: Wed Jun 24 14:44:58 2015 -0700

----------------------------------------------------------------------
 .../ExtendedThrowablePatternConverter.java      |  2 +-
 .../ExtendedThrowablePatternConverterTest.java  | 51 +++++++++++++-------
 src/changes/changes.xml                         |  3 ++
 3 files changed, 38 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e7bbeceb/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
index 3897721..2357093 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverter.java
@@ -64,7 +64,7 @@ public final class ExtendedThrowablePatternConverter extends ThrowablePatternCon
             proxy = ((Log4jLogEvent) event).getThrownProxy();
         }
         final Throwable throwable = event.getThrown();
-        if (throwable != null && options.anyLines()) {
+        if ((throwable != null || proxy != null) && options.anyLines()) {
             if (proxy == null) {
                 super.format(event, toAppendTo);
                 return;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e7bbeceb/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
index 9edc98a..8d0a528 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
@@ -16,53 +16,70 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
 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.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.Strings;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  *
  */
 public class ExtendedThrowablePatternConverterTest {
 
     @Test
-    public void testFull() {
-        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(null);
+	public void testDeserializedLogEventWithThrowableProxyButNoThrowable() {
+		final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(null);
+		final Throwable originalThrowable = new Exception("something bad happened");
+		final ThrowableProxy throwableProxy = new ThrowableProxy(originalThrowable);
+		final Throwable deserializedThrowable = null;
+		final LogEvent event = Log4jLogEvent.createEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
+				new SimpleMessage(""), deserializedThrowable, throwableProxy, null, null, null, null, 0);
+		final StringBuilder sb = new StringBuilder();
+		converter.format(event, sb);
+		final String result = sb.toString();
+		assertTrue(result, result.contains(originalThrowable.getMessage()));
+		assertTrue(result, result.contains(originalThrowable.getStackTrace()[0].getMethodName()));
+	}
+
+    @Test
+    public void testFiltering() {
+        final String packages = "filters(org.junit, org.apache.maven, sun.reflect, java.lang.reflect)";
+        final String[] options = {packages};
+        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(options);
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
             new SimpleMessage("test exception"), parent);
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        final StringWriter sw = new StringWriter();
-        final PrintWriter pw = new PrintWriter(sw);
-        parent.printStackTrace(pw);
-        String result = sb.toString();
-        result = result.replaceAll(" ~?\\[.*\\]", Strings.EMPTY);
-        final String expected = sw.toString().replaceAll("\r", Strings.EMPTY);
-        assertEquals(expected, result);
+        final String result = sb.toString();
+        assertTrue("No suppressed lines", result.contains(" suppressed "));
     }
 
     @Test
-    public void testFiltering() {
-        final String packages = "filters(org.junit, org.apache.maven, sun.reflect, java.lang.reflect)";
-        final String[] options = {packages};
-        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(options);
+    public void testFull() {
+        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(null);
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
             new SimpleMessage("test exception"), parent);
         final StringBuilder sb = new StringBuilder();
         converter.format(event, sb);
-        final String result = sb.toString();
-        assertTrue("No suppressed lines", result.contains(" suppressed "));
+        final StringWriter sw = new StringWriter();
+        final PrintWriter pw = new PrintWriter(sw);
+        parent.printStackTrace(pw);
+        String result = sb.toString();
+        result = result.replaceAll(" ~?\\[.*\\]", Strings.EMPTY);
+        final String expected = sw.toString().replaceAll("\r", Strings.EMPTY);
+        assertEquals(expected, result);
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e7bbeceb/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3451f85..f4257d4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -48,6 +48,9 @@
       <action issue="LOG4J2-1051" dev="ggregory" type="fix" due-to="Lukasz Lenart">
         NoClassDefFoundError when starting app on Google App Engine.
       </action>
+      <action issue="LOG4J2-1068" dev="ggregory" type="fix" due-to="Andy McMullan">
+        Exceptions not logged when using TcpSocketServer + SerializedLayout.
+      </action>
       <action issue="LOG4J2-1067" dev="ggregory" type="fix" due-to="Sam Braam">
         ThrowableProxy getExtendedStackTraceAsString throws NPE on deserialized nested exceptions.
       </action>