Author: carnold
Date: Tue Aug 5 21:17:10 2008
New Revision: 683102
URL: http://svn.apache.org/viewvc?rev=683102&view=rev
Log:
Bug 37182: Exception in call to toString of message propagates to caller
Modified:
logging/log4j/trunk/src/changes/changes.xml
logging/log4j/trunk/src/main/java/org/apache/log4j/or/DefaultRenderer.java
logging/log4j/trunk/src/main/java/org/apache/log4j/or/ThreadGroupRenderer.java
logging/log4j/trunk/src/main/java/org/apache/log4j/or/sax/AttributesRenderer.java
logging/log4j/trunk/tests/src/java/org/apache/log4j/spi/LoggingEventTest.java
Modified: logging/log4j/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/src/changes/changes.xml?rev=683102&r1=683101&r2=683102&view=diff
==============================================================================
--- logging/log4j/trunk/src/changes/changes.xml (original)
+++ logging/log4j/trunk/src/changes/changes.xml Tue Aug 5 21:17:10 2008
@@ -42,6 +42,7 @@
<action action="fix" issue="45426">ErrorHandlerTestCase is not run and
does not pass.</action>
<action action="fix" issue="45485">Agent.java is sole dependency on
jmxtools.jar with Java 5+.</action>
<action action="fix" issue="44517">Eliminate compile dependency on
non-redistributable JMS reference implementation.</action>
+ <action action="fix" issue="37182">Exception in call to toString of
message propagates to caller.</action>
</release>
<release version="1.2.15" date="2007-08-24" description="SyslogAppender
enhancements, NTEventLogAppender and Maven build.">
Modified:
logging/log4j/trunk/src/main/java/org/apache/log4j/or/DefaultRenderer.java
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/or/DefaultRenderer.java?rev=683102&r1=683101&r2=683102&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/or/DefaultRenderer.java
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/or/DefaultRenderer.java
Tue Aug 5 21:17:10 2008
@@ -32,7 +32,11 @@
Render the object passed as parameter by calling its
<code>toString</code> method. */
public
- String doRender(Object o) {
- return o.toString();
+ String doRender(final Object o) {
+ try {
+ return o.toString();
+ } catch(Exception ex) {
+ return ex.toString();
+ }
}
}
Modified:
logging/log4j/trunk/src/main/java/org/apache/log4j/or/ThreadGroupRenderer.java
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/or/ThreadGroupRenderer.java?rev=683102&r1=683101&r2=683102&view=diff
==============================================================================
---
logging/log4j/trunk/src/main/java/org/apache/log4j/or/ThreadGroupRenderer.java
(original)
+++
logging/log4j/trunk/src/main/java/org/apache/log4j/or/ThreadGroupRenderer.java
Tue Aug 5 21:17:10 2008
@@ -70,8 +70,12 @@
}
return sbuf.toString();
} else {
- // this is the best we can do
- return o.toString();
+ try {
+ // this is the best we can do
+ return o.toString();
+ } catch(Exception ex) {
+ return ex.toString();
+ }
}
}
}
Modified:
logging/log4j/trunk/src/main/java/org/apache/log4j/or/sax/AttributesRenderer.java
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/or/sax/AttributesRenderer.java?rev=683102&r1=683101&r2=683102&view=diff
==============================================================================
---
logging/log4j/trunk/src/main/java/org/apache/log4j/or/sax/AttributesRenderer.java
(original)
+++
logging/log4j/trunk/src/main/java/org/apache/log4j/or/sax/AttributesRenderer.java
Tue Aug 5 21:17:10 2008
@@ -55,7 +55,11 @@
}
return sbuf.toString();
} else {
- return o.toString();
+ try {
+ return o.toString();
+ } catch(Exception ex) {
+ return ex.toString();
+ }
}
}
}
Modified:
logging/log4j/trunk/tests/src/java/org/apache/log4j/spi/LoggingEventTest.java
URL:
http://svn.apache.org/viewvc/logging/log4j/trunk/tests/src/java/org/apache/log4j/spi/LoggingEventTest.java?rev=683102&r1=683101&r2=683102&view=diff
==============================================================================
---
logging/log4j/trunk/tests/src/java/org/apache/log4j/spi/LoggingEventTest.java
(original)
+++
logging/log4j/trunk/tests/src/java/org/apache/log4j/spi/LoggingEventTest.java
Tue Aug 5 21:17:10 2008
@@ -238,5 +238,35 @@
}
}
+ /**
+ * Message object that throws a RuntimeException on toString().
+ * See bug 37182.
+ */
+ private static class BadMessage {
+ public BadMessage() {
+ }
+
+ public String toString() {
+ throw new RuntimeException();
+ }
+ }
+
+ /**
+ * Tests that an runtime exception or error during toString
+ * on the message parameter does not propagate to caller.
+ * See bug 37182.
+ */
+ public void testBadMessage() {
+ Category root = Logger.getRootLogger();
+ Priority info = Level.INFO;
+ String catName = Logger.class.toString();
+ BadMessage msg = new BadMessage();
+ LoggingEvent event =
+ new LoggingEvent(
+ catName, root, 0L, info, msg, null);
+ // would result in exception in earlier versions
+ event.getRenderedMessage();
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]