You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/09/28 15:02:28 UTC

svn commit: r1391439 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java main/java/org/apache/camel/processor/LoggingErrorHandler.java test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java

Author: davsclaus
Date: Fri Sep 28 13:02:27 2012
New Revision: 1391439

URL: http://svn.apache.org/viewvc?rev=1391439&view=rev
Log:
CAMEL-5592: Fixed logging error handler to use the logging level configured.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java?rev=1391439&r1=1391438&r2=1391439&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java Fri Sep 28 13:02:27 2012
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.LoggingErrorHandler;
+import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelLogger;
 import org.slf4j.Logger;
@@ -52,7 +53,19 @@ public class LoggingErrorHandlerBuilder 
     public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) {
         CamelLogger logger = new CamelLogger(log, level);
 
-        LoggingErrorHandler handler = new LoggingErrorHandler(routeContext.getCamelContext(), processor, logger, getExceptionPolicyStrategy());
+        // configure policy to use the selected logging level, and only log exhausted
+        RedeliveryPolicy policy = new RedeliveryPolicy();
+        policy.setLogExhausted(true);
+        policy.setRetriesExhaustedLogLevel(level);
+        policy.setLogStackTrace(true);
+        policy.setLogRetryAttempted(false);
+        policy.setRetryAttemptedLogLevel(LoggingLevel.OFF);
+        policy.setLogRetryStackTrace(false);
+        policy.setLogContinued(false);
+        policy.setLogHandled(false);
+
+        LoggingErrorHandler handler = new LoggingErrorHandler(routeContext.getCamelContext(), processor, logger,
+                policy, getExceptionPolicyStrategy());
         configure(routeContext, handler);
         return handler;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java?rev=1391439&r1=1391438&r2=1391439&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java Fri Sep 28 13:02:27 2012
@@ -34,10 +34,12 @@ public class LoggingErrorHandler extends
      * @param camelContext            the camel context
      * @param output                  outer processor that should use this logging error handler
      * @param logger                  logger to use for logging failures
+     * @param redeliveryPolicy        redelivery policy
      * @param exceptionPolicyStrategy strategy for onException handling
      */
-    public LoggingErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger, ExceptionPolicyStrategy exceptionPolicyStrategy) {
-        super(camelContext, output, logger, null, new RedeliveryPolicy(), exceptionPolicyStrategy, null, null);
+    public LoggingErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger,
+                               RedeliveryPolicy redeliveryPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy) {
+        super(camelContext, output, logger, null, redeliveryPolicy, exceptionPolicyStrategy, null, null);
     }
 
     @Override

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java?rev=1391439&r1=1391438&r2=1391439&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/LoggingErrorHandlerBuilderTest.java Fri Sep 28 13:02:27 2012
@@ -60,7 +60,7 @@ public class LoggingErrorHandlerBuilderT
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                errorHandler(loggingErrorHandler().level(LoggingLevel.ERROR).log(LoggerFactory.getLogger("foo")));
+                errorHandler(loggingErrorHandler().level(LoggingLevel.WARN).log(LoggerFactory.getLogger("foo")));
 
                 from("direct:start").to("mock:foo").throwException(new IllegalArgumentException("Damn"));
             }
@@ -140,4 +140,24 @@ public class LoggingErrorHandlerBuilderT
             // expected
         }
     }
+
+    public void testLoggingErrorHandler6() throws Exception {
+        context.addRoutes(new RouteBuilder() {
+            @Override
+            public void configure() throws Exception {
+                errorHandler(loggingErrorHandler().level(LoggingLevel.WARN).logName("foo"));
+
+                from("direct:start").routeId("myRoute")
+                    .to("mock:foo")
+                    .throwException(new IllegalArgumentException("Damn"));
+            }
+        });
+        context.start();
+
+        try {
+            template.sendBody("direct:start", "Hello World");
+        } catch (Exception e) {
+            // expected
+        }
+    }
 }