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]