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>