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();
+    }
+
 }


Reply via email to