Author: davsclaus Date: Thu Jul 16 12:32:04 2009 New Revision: 794651 URL: http://svn.apache.org/viewvc?rev=794651&view=rev Log: CAMEL-1836: log component can now output stacktrace.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java?rev=794651&r1=794650&r2=794651&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogFormatter.java Thu Jul 16 12:32:04 2009 @@ -16,6 +16,9 @@ */ package org.apache.camel.component.log; +import java.io.PrintWriter; +import java.io.StringWriter; + import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.StreamCache; @@ -34,6 +37,7 @@ private boolean showBody = true; private boolean showOut; private boolean showException; + private boolean showStackTrace; private boolean showAll; private boolean multiline; private int maxChars; @@ -76,7 +80,13 @@ if (multiline) { sb.append('\n'); } - sb.append(", Exception:").append(exchange.getException().getMessage()); + sb.append(", ExceptionType:").append(exchange.getException().getClass().getCanonicalName()); + sb.append(", ExceptionMessage:").append(exchange.getException().getMessage()); + if (showAll || showStackTrace) { + StringWriter sw = new StringWriter(); + exchange.getException().printStackTrace(new PrintWriter(sw)); + sb.append(", StackTrace:").append(sw.toString()); + } } if (showAll || showOut) { @@ -196,6 +206,14 @@ this.showException = showException; } + public boolean isShowStackTrace() { + return showStackTrace; + } + + public void setShowStackTrace(boolean showStackTrace) { + this.showStackTrace = showStackTrace; + } + public boolean isMultiline() { return multiline; } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java?rev=794651&r1=794650&r2=794651&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogFormatterTest.java Thu Jul 16 12:32:04 2009 @@ -92,4 +92,16 @@ producer.stop(); } + public void testSendExchangeWithExceptionAndStackTrace() throws Exception { + Endpoint endpoint = resolveMandatoryEndpoint("log:org.apache.camel.TEST?showException=true&showStackTrace=true"); + Exchange exchange = endpoint.createExchange(); + exchange.getIn().setBody("Hello World"); + exchange.setException(new IllegalArgumentException("Damn")); + + Producer producer = endpoint.createProducer(); + producer.start(); + producer.process(exchange); + producer.stop(); + } + }