You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cs...@apache.org on 2011/09/05 12:35:37 UTC

svn commit: r1165232 - in /camel/trunk: camel-core/ camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/component/dataset/ camel-core/src/main/java/org/apache/camel/component/log/ camel-core/src/main/java/org/ap...

Author: cschneider
Date: Mon Sep  5 10:35:35 2011
New Revision: 1165232

URL: http://svn.apache.org/viewvc?rev=1165232&view=rev
Log:
CAMEL-4414 Add new simpler CamelLogger in util and CamelLogProcessor in processor. Old CamelLogger stays in place for compatibility

Added:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java   (contents, props changed)
      - copied, changed from r1164512, camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java
Modified:
    camel/trunk/camel-core/pom.xml
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
    camel/trunk/components/   (props changed)
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java
    camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
    camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
    camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java
    camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ServerChannelHandler.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
    camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
    camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogTest-context.xml
    camel/trunk/parent/pom.xml

Modified: camel/trunk/camel-core/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/pom.xml?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/pom.xml (original)
+++ camel/trunk/camel-core/pom.xml Mon Sep  5 10:35:35 2011
@@ -91,6 +91,11 @@
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java Mon Sep  5 10:35:35 2011
@@ -21,11 +21,11 @@ import org.apache.camel.ExchangePattern;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.DeadLetterChannel;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.LoggerFactory;
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java Mon Sep  5 10:35:35 2011
@@ -16,21 +16,20 @@
  */
 package org.apache.camel.builder;
 
+import static org.apache.camel.builder.PredicateBuilder.toPredicate;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.DefaultErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelLogger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.camel.builder.PredicateBuilder.toPredicate;
-
 /**
  * The default error handler builder.
  *

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=1165232&r1=1165231&r2=1165232&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 Mon Sep  5 10:35:35 2011
@@ -18,9 +18,9 @@ package org.apache.camel.builder;
 
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.LoggingErrorHandler;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetConsumer.java Mon Sep  5 10:35:35 2011
@@ -23,6 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.processor.ThroughputLogger;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * DataSet consumer.
@@ -105,7 +106,8 @@ public class DataSetConsumer extends Def
     }
 
     protected ThroughputLogger createReporter() {
-        ThroughputLogger answer = new ThroughputLogger(endpoint.getEndpointUri(), (int) endpoint.getDataSet().getReportCount());
+        CamelLogger logger = new CamelLogger(endpoint.getEndpointUri());
+        ThroughputLogger answer = new ThroughputLogger(logger, (int) endpoint.getDataSet().getReportCount());
         answer.setAction("Sent");
         return answer;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/dataset/DataSetEndpoint.java Mon Sep  5 10:35:35 2011
@@ -26,6 +26,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.Service;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.processor.ThroughputLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
@@ -208,7 +209,8 @@ public class DataSetEndpoint extends Moc
     }
 
     protected ThroughputLogger createReporter() {
-        ThroughputLogger answer = new ThroughputLogger(this.getEndpointUri(), (int) this.getDataSet().getReportCount());
+        CamelLogger logger = new CamelLogger(this.getEndpointUri());
+        ThroughputLogger answer = new ThroughputLogger(logger, (int) this.getDataSet().getReportCount());
         answer.setAction("Received");
         return answer;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java Mon Sep  5 10:35:35 2011
@@ -20,9 +20,11 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.LoggingLevel;
+import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultComponent;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.processor.CamelLogProcessor;
 import org.apache.camel.processor.ThroughputLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.IntrospectionSupport;
 
 /**
@@ -38,20 +40,19 @@ public class LogComponent extends Defaul
         Integer groupSize = getAndRemoveParameter(parameters, "groupSize", Integer.class);
         Long groupInterval = getAndRemoveParameter(parameters, "groupInterval", Long.class);
 
-        CamelLogger logger;
+        CamelLogger camelLogger = new CamelLogger(remaining, level);
+        Processor logger;
         if (groupSize != null) {
-            logger = new ThroughputLogger(remaining, level, groupSize);
+            logger = new ThroughputLogger(camelLogger, groupSize);
         } else if (groupInterval != null) {
             Boolean groupActiveOnly = getAndRemoveParameter(parameters, "groupActiveOnly", Boolean.class, Boolean.TRUE);
             Long groupDelay = getAndRemoveParameter(parameters, "groupDelay", Long.class);
-            logger = new ThroughputLogger(this.getCamelContext(), remaining, level, groupInterval, groupDelay, groupActiveOnly);
+            logger = new ThroughputLogger(camelLogger, this.getCamelContext(), groupInterval, groupDelay, groupActiveOnly);
         } else {
             LogFormatter formatter = new LogFormatter();
             IntrospectionSupport.setProperties(formatter, parameters);
 
-            logger = new CamelLogger(remaining);
-            logger.setLevel(level);
-            logger.setFormatter(formatter);
+            logger = new CamelLogProcessor(camelLogger, formatter);
         }
 
         LogEndpoint endpoint = new LogEndpoint(uri, this);

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogEndpoint.java Mon Sep  5 10:35:35 2011
@@ -17,9 +17,9 @@
 package org.apache.camel.component.log;
 
 import org.apache.camel.Component;
+import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.ProcessorEndpoint;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.util.ServiceHelper;
 
 /**
@@ -27,7 +27,7 @@ import org.apache.camel.util.ServiceHelp
  */
 public class LogEndpoint extends ProcessorEndpoint {
 
-    private CamelLogger logger;
+    private Processor logger;
 
     public LogEndpoint() {
     }
@@ -36,15 +36,11 @@ public class LogEndpoint extends Process
         super(endpointUri, component);
     }
 
-    public LogEndpoint(String endpointUri, Component component, CamelLogger logger) {
+    public LogEndpoint(String endpointUri, Component component, Processor logger) {
         super(endpointUri, component);
         setLogger(logger);
     }
     
-    public CamelLogger getLogger() {
-        return logger;
-    }
-
     @Override
     public void start() throws Exception {
         ServiceHelper.startService(logger);
@@ -55,7 +51,7 @@ public class LogEndpoint extends Process
         ServiceHelper.stopService(logger);
     }
     
-    public void setLogger(CamelLogger logger) {
+    public void setLogger(Processor logger) {
         this.logger = logger;
         // the logger is the processor
         setProcessor(this.logger);
@@ -63,7 +59,7 @@ public class LogEndpoint extends Process
 
     @Override
     public Producer createProducer() throws Exception {
-        return new LogProducer(this, getLogger());
+        return new LogProducer(this, this.logger);
     }
 
     @Override

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/log/LogProducer.java Mon Sep  5 10:35:35 2011
@@ -19,23 +19,28 @@ package org.apache.camel.component.log;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultAsyncProducer;
-import org.apache.camel.processor.CamelLogger;
 
 /**
  * Log producer.
  */
 public class LogProducer extends DefaultAsyncProducer {
 
-    private final CamelLogger logger;
+    private final Processor logger;
 
-    public LogProducer(Endpoint endpoint, CamelLogger logger) {
+    public LogProducer(Endpoint endpoint, Processor logger) {
         super(endpoint);
         this.logger = logger;
     }
 
     public boolean process(Exchange exchange, AsyncCallback callback) {
-        logger.process(exchange);
+        try {
+            logger.process(exchange);
+        } catch (Exception e) {
+            throw new RuntimeCamelException(e);
+        }
         callback.done(true);
         return true;
     }

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockComponent.java Mon Sep  5 10:35:35 2011
@@ -22,6 +22,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultComponent;
 import org.apache.camel.processor.ThroughputLogger;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * A factory of {@link MockEndpoint} instances
@@ -35,7 +36,7 @@ public class MockComponent extends Defau
         MockEndpoint endpoint = new MockEndpoint(uri, this);
         Integer value = getAndRemoveParameter(parameters, "reportGroup", Integer.class);
         if (value != null) {
-            Processor reporter = new ThroughputLogger("org.apache.camel.component.mock:" + remaining, value);
+            Processor reporter = new ThroughputLogger(new CamelLogger("org.apache.camel.component.mock:" + remaining), value);
             endpoint.setReporter(reporter);
         }
         return endpoint;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java Mon Sep  5 10:35:35 2011
@@ -20,8 +20,8 @@ import org.apache.camel.CamelExchangeExc
 import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.RollbackExchangeException;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.util.CamelLogger;
 import org.slf4j.LoggerFactory;
 
 /**

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/ThrottlingInflightRoutePolicy.java Mon Sep  5 10:35:35 2011
@@ -30,8 +30,8 @@ import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Route;
 import org.apache.camel.management.event.ExchangeCompletedEvent;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.support.EventNotifierSupport;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.slf4j.LoggerFactory;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java Mon Sep  5 10:35:35 2011
@@ -24,9 +24,9 @@ import javax.xml.bind.annotation.XmlRoot
 import org.apache.camel.Expression;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.LogProcessor;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 
 /**

Copied: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java (from r1164512, camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java?p2=camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java&r1=1164512&r2=1165232&rev=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java Mon Sep  5 10:35:35 2011
@@ -21,9 +21,7 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultExchangeFormatter;
 import org.apache.camel.spi.ExchangeFormatter;
-import org.apache.camel.support.ServiceSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * A {@link Processor} which just logs to a {@link CamelLogger} object which can be used
@@ -34,33 +32,19 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public class CamelLogger extends ServiceSupport implements Processor {
-    private Logger log;
-    private LoggingLevel level;
+public class CamelLogProcessor implements Processor {
+    private CamelLogger log;
     private ExchangeFormatter formatter = DefaultExchangeFormatter.getInstance();
 
-    public CamelLogger() {
-        this(LoggerFactory.getLogger(CamelLogger.class));
+    public CamelLogProcessor() {
+        this(new CamelLogger(CamelLogProcessor.class.getName()));
     }
-
-    public CamelLogger(Logger log) {
-        this(log, LoggingLevel.INFO);
-    }
-
-    public CamelLogger(Logger log, LoggingLevel level) {
+    
+    public CamelLogProcessor(CamelLogger log) {
         this.log = log;
-        this.level = level;
-    }
-
-    public CamelLogger(String logName) {
-        this(LoggerFactory.getLogger(logName));
-    }
-
-    public CamelLogger(String logName, LoggingLevel level) {
-        this(LoggerFactory.getLogger(logName), level);
     }
 
-    public CamelLogger(Logger log, ExchangeFormatter formatter) {
+    public CamelLogProcessor(CamelLogger log, ExchangeFormatter formatter) {
         this(log);
         this.formatter = formatter;
     }
@@ -71,228 +55,34 @@ public class CamelLogger extends Service
     }
 
     public void process(Exchange exchange) {
-        switch (level) {
-        case DEBUG:
-            if (log.isDebugEnabled()) {
-                log.debug(logMessage(exchange));
-            }
-            break;
-        case ERROR:
-            if (log.isErrorEnabled()) {
-                log.error(logMessage(exchange));
-            }
-            break;
-        case INFO:
-            if (log.isInfoEnabled()) {
-                log.info(logMessage(exchange));
-            }
-            break;
-        case TRACE:
-            if (log.isTraceEnabled()) {
-                log.trace(logMessage(exchange));
-            }
-            break;
-        case WARN:
-            if (log.isWarnEnabled()) {
-                log.warn(logMessage(exchange));
-            }
-            break;
-        case OFF:
-            break;
-        default:
-            log.error("Unknown level: " + level + " when trying to log exchange: " + logMessage(exchange));
+        if (log.shouldLog()) {
+            log.log(formatter.format(exchange));
         }
     }
-
+    
     public void process(Exchange exchange, Throwable exception) {
-        switch (level) {
-        case DEBUG:
-            if (log.isDebugEnabled()) {
-                log.debug(logMessage(exchange), exception);
-            }
-            break;
-        case ERROR:
-            if (log.isErrorEnabled()) {
-                log.error(logMessage(exchange), exception);
-            }
-            break;
-        case INFO:
-            if (log.isInfoEnabled()) {
-                log.info(logMessage(exchange), exception);
-            }
-            break;
-        case TRACE:
-            if (log.isTraceEnabled()) {
-                log.trace(logMessage(exchange), exception);
-            }
-            break;
-        case WARN:
-            if (log.isWarnEnabled()) {
-                log.warn(logMessage(exchange), exception);
-            }
-            break;
-        case OFF:
-            break;
-        default:
-            log.error("Unknown level: " + level + " when trying to log exchange: " + logMessage(exchange));
+        if (log.shouldLog()) {
+            log.log(formatter.format(exchange), exception);
         }
     }
 
     public void process(Exchange exchange, String message) {
-        switch (level) {
-        case DEBUG:
-            if (log.isDebugEnabled()) {
-                log.debug(logMessage(exchange, message));
-            }
-            break;
-        case ERROR:
-            if (log.isErrorEnabled()) {
-                log.error(logMessage(exchange, message));
-            }
-            break;
-        case INFO:
-            if (log.isInfoEnabled()) {
-                log.info(logMessage(exchange, message));
-            }
-            break;
-        case TRACE:
-            if (log.isTraceEnabled()) {
-                log.trace(logMessage(exchange, message));
-            }
-            break;
-        case WARN:
-            if (log.isWarnEnabled()) {
-                log.warn(logMessage(exchange, message));
-            }
-            break;
-        case OFF:
-            break;
-        default:
-            log.error("Unknown level: " + level + " when trying to log exchange: " + logMessage(exchange, message));
+        if (log.shouldLog()) {
+            log.log(formatter.format(exchange) + message);
         }
     }
 
-    public void log(String message, LoggingLevel loggingLevel) {
-        LoggingLevel oldLogLevel = getLevel();
-        setLevel(loggingLevel);
-        log(message);
-        setLevel(oldLogLevel);
+    public CamelLogger getLogger() {
+        return log;
     }
     
-    public void log(String message) {
-        switch (level) {
-        case DEBUG:
-            if (log.isDebugEnabled()) {
-                log.debug(message);
-            }
-            break;
-        case ERROR:
-            if (log.isErrorEnabled()) {
-                log.error(message);
-            }
-            break;
-        case INFO:
-            if (log.isInfoEnabled()) {
-                log.info(message);
-            }
-            break;
-        case TRACE:
-            if (log.isTraceEnabled()) {
-                log.trace(message);
-            }
-            break;
-        case WARN:
-            if (log.isWarnEnabled()) {
-                log.warn(message);
-            }
-            break;
-        case OFF:
-            break;
-        default:
-            log.error("Unknown level: " + level + " when trying to log exchange: " + message);
-        }
+    public void setLogName(String logName) {
+        log.setLogName(logName);
     }
-
-    public void log(String message, Throwable exception, LoggingLevel loggingLevel) {
-        LoggingLevel oldLogLevel = getLevel();
-        setLevel(loggingLevel);
-        log(message, exception);
-        setLevel(oldLogLevel);
-    }   
     
-    public void log(String message, Throwable exception) {
-        switch (level) {
-        case DEBUG:
-            if (log.isDebugEnabled()) {
-                log.debug(message, exception);
-            }
-            break;
-        case ERROR:
-            if (log.isErrorEnabled()) {
-                log.error(message, exception);
-            }
-            break;
-        case INFO:
-            if (log.isInfoEnabled()) {
-                log.info(message, exception);
-            }
-            break;
-        case TRACE:
-            if (log.isTraceEnabled()) {
-                log.trace(message, exception);
-            }
-            break;
-        case WARN:
-            if (log.isWarnEnabled()) {
-                log.warn(message, exception);
-            }
-            break;
-        case OFF:
-            break;
-        default:
-            log.error("Unknown level: " + level + " when trying to log exchange: " + message, exception);
-        }
-    }
-
-    protected String logMessage(Exchange exchange) {
-        return formatter.format(exchange);
-    }
-
-    protected String logMessage(Exchange exchange, String message) {
-        return formatter.format(exchange) + message;
-    }
-
-    public Logger getLog() {
-        return log;
-    }
-
-    public void setLog(Logger log) {
-        this.log = log;
-    }
-
-    public LoggingLevel getLevel() {
-        return level;
-    }
-
     public void setLevel(LoggingLevel level) {
-        this.level = level;
+        log.setLevel(level);
     }
 
-    public void setFormatter(ExchangeFormatter formatter) {
-        this.formatter = formatter;
-    }
 
-    public void setLogName(String logName) {
-        this.log = LoggerFactory.getLogger(logName);
-    }
-
-    @Override
-    protected void doStart() throws Exception {
-        // noop
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        // noop
-    }
 }

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogger.java Mon Sep  5 10:35:35 2011
@@ -32,8 +32,9 @@ import org.slf4j.LoggerFactory;
  * The name <tt>CamelLogger</tt> has been chosen to avoid any name clash with log kits
  * which has a <tt>Logger</tt> class.
  *
- * @version 
+ * @deprecated This class has been split up into org.apache.camel.util.CamelLogger and org.apache.camel.processor.CamelLogProcessor 
  */
+@Deprecated
 public class CamelLogger extends ServiceSupport implements Processor {
     private Logger log;
     private LoggingLevel level;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java Mon Sep  5 10:35:35 2011
@@ -23,6 +23,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.builder.PredicateBuilder;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * Implements a <a

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java Mon Sep  5 10:35:35 2011
@@ -21,6 +21,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * Default error handler

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java Mon Sep  5 10:35:35 2011
@@ -21,6 +21,7 @@ import org.apache.camel.AsyncProcessor;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.util.AsyncProcessorHelper;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * A processor which evaluates an Expression and logs it.

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=1165232&r1=1165231&r2=1165232&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 Mon Sep  5 10:35:35 2011
@@ -19,6 +19,7 @@ package org.apache.camel.processor;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * An {@link ErrorHandler} which uses commons-logging to dump the error

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Mon Sep  5 10:35:35 2011
@@ -34,6 +34,7 @@ import org.apache.camel.model.OnExceptio
 import org.apache.camel.spi.SubUnitOfWorkCallback;
 import org.apache.camel.util.AsyncProcessorHelper;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.EventHelper;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.MessageHelper;

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/ThroughputLogger.java Mon Sep  5 10:35:35 2011
@@ -23,7 +23,9 @@ import java.util.concurrent.atomic.Atomi
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
+import org.apache.camel.Processor;
+import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,7 +35,7 @@ import org.slf4j.LoggerFactory;
  *
  * @version 
  */
-public class ThroughputLogger extends CamelLogger {
+public class ThroughputLogger extends ServiceSupport implements Processor {
     private static final Logger LOG = LoggerFactory.getLogger(ThroughputLogger.class);
 
     private final AtomicInteger receivedCounter = new AtomicInteger();
@@ -46,38 +48,21 @@ public class ThroughputLogger extends Ca
     private long startTime;
     private long groupStartTime;
     private String action = "Received";
-    private String logMessage;
     private CamelContext camelContext;
     private ScheduledExecutorService logSchedulerService;
+    private CamelLogger log;
 
-    public ThroughputLogger() {
+    public ThroughputLogger(CamelLogger log) {
+        this.log = log;
     }
 
-    public ThroughputLogger(Logger log) {
-        super(log);
-    }
-
-    public ThroughputLogger(Logger log, LoggingLevel level) {
-        super(log, level);
-    }
-
-    public ThroughputLogger(String logName) {
-        super(logName);
-    }
-
-    public ThroughputLogger(String logName, LoggingLevel level) {
-        super(logName, level);
-    }
-
-    public ThroughputLogger(String logName, LoggingLevel level, Integer groupSize) {
-        super(logName, level);
+    public ThroughputLogger(CamelLogger log, Integer groupSize) {
+        this(log);
         setGroupSize(groupSize);
     }
 
-    public ThroughputLogger(CamelContext camelContext, String logName, LoggingLevel level,
-                            Long groupInterval, Long groupDelay, Boolean groupActiveOnly) {
-        super(logName, level);
-
+    public ThroughputLogger(CamelLogger log, CamelContext camelContext, Long groupInterval, Long groupDelay, Boolean groupActiveOnly) {
+        this(log);
         this.camelContext = camelContext;
         setGroupInterval(groupInterval);
         setGroupActiveOnly(groupActiveOnly);
@@ -86,15 +71,6 @@ public class ThroughputLogger extends Ca
         }
     }
 
-    public ThroughputLogger(String logName, int groupSize) {
-        super(logName);
-        setGroupSize(groupSize);
-    }
-
-    public ThroughputLogger(int groupSize) {
-        setGroupSize(groupSize);
-    }
-
     @Override
     public void process(Exchange exchange) {
         if (startTime == 0) {
@@ -105,8 +81,7 @@ public class ThroughputLogger extends Ca
         //only process if groupSize is set...otherwise we're in groupInterval mode
         if (groupSize != null) {
             if (receivedCount % groupSize == 0) {
-                logMessage = createLogMessage(exchange, receivedCount);
-                super.process(exchange);
+                log.log(createLogMessage(exchange, receivedCount));
             }
         }
     }
@@ -164,14 +139,9 @@ public class ThroughputLogger extends Ca
     public void setAction(String action) {
         this.action = action;
     }
-
-    @Override
-    protected String logMessage(Exchange exchange) {
-        return logMessage;
-    }
-
+    
     @Override
-    public void start() throws Exception {
+    public void doStart() throws Exception {
         // if an interval was specified, create a background thread
         if (groupInterval != null) {
             ObjectHelper.notNull(camelContext, "CamelContext", this);
@@ -185,7 +155,7 @@ public class ThroughputLogger extends Ca
     }
 
     @Override
-    public void stop() throws Exception {
+    public void doStop() throws Exception {
         if (logSchedulerService != null) {
             camelContext.getExecutorServiceManager().shutdownNow(logSchedulerService);
             logSchedulerService = null;
@@ -255,7 +225,7 @@ public class ThroughputLogger extends Ca
         String message = getAction() + ": " + currentCount + " new messages, with total " + receivedCount + " so far. Last group took: " + duration
                 + " millis which is: " + numberFormat.format(rate)
                 + " messages per second. average: " + numberFormat.format(average);
-        log(message);
+        log.log(message);
     }
 
     protected double messagesPerSecond(long messageCount, long startTime, long endTime) {

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/TraceInterceptor.java Mon Sep  5 10:35:35 2011
@@ -40,7 +40,7 @@ import org.apache.camel.model.OnCompleti
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.processor.CamelLogProcessor;
 import org.apache.camel.processor.DelegateAsyncProcessor;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.InterceptStrategy;
@@ -60,7 +60,7 @@ import org.slf4j.LoggerFactory;
 public class TraceInterceptor extends DelegateAsyncProcessor implements ExchangeFormatter {
     private static final transient Logger LOG = LoggerFactory.getLogger(TraceInterceptor.class);
 
-    private CamelLogger logger;
+    private CamelLogProcessor logger;
     private Producer traceEventProducer;
     private final ProcessorDefinition node;
     private final Tracer tracer;
@@ -276,7 +276,7 @@ public class TraceInterceptor extends De
         return node;
     }
 
-    public CamelLogger getLogger() {
+    public CamelLogProcessor getLogger() {
         return logger;
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/Tracer.java Mon Sep  5 10:35:35 2011
@@ -26,10 +26,10 @@ import org.apache.camel.Processor;
 import org.apache.camel.Service;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.RouteDefinitionHelper;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.processor.CamelLogProcessor;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.spi.InterceptStrategy;
-import org.slf4j.LoggerFactory;
+import org.apache.camel.util.CamelLogger;
 
 /**
  * An interceptor strategy for tracing routes
@@ -51,7 +51,7 @@ public class Tracer implements Intercept
     private String destinationUri;
     private Endpoint destination;
     private boolean useJpa;
-    private CamelLogger logger;
+    private CamelLogProcessor logger;
     private TraceInterceptorFactory traceInterceptorFactory = new DefaultTraceInterceptorFactory();
     private TraceEventHandler traceHandler;
     private String jpaTraceEventMessageClassName = JPA_TRACE_EVENT_MESSAGE;
@@ -93,10 +93,9 @@ public class Tracer implements Intercept
      * @param formatter the exchange formatter
      * @return the logger to use
      */
-    public synchronized CamelLogger getLogger(ExchangeFormatter formatter) {
+    public synchronized CamelLogProcessor getLogger(ExchangeFormatter formatter) {
         if (logger == null) {
-            logger = new CamelLogger(LoggerFactory.getLogger(getLogName()), formatter);
-            logger.setLevel(getLogLevel());
+            logger = new CamelLogProcessor(new CamelLogger(getLogName(), getLogLevel()), formatter);
         }
         return logger;
     }
@@ -165,7 +164,7 @@ public class Tracer implements Intercept
         this.logLevel = logLevel;
         // update logger if its in use
         if (logger != null) {
-            logger.setLevel(logLevel);
+            logger.getLogger().setLevel(logLevel);
         }
     }
 
@@ -203,7 +202,7 @@ public class Tracer implements Intercept
         this.logName = logName;
         // update logger if its in use
         if (logger != null) {
-            logger.setLogName(logName);
+            logger.getLogger().setLogName(logName);
         }
     }
 

Added: camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java?rev=1165232&view=auto
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java (added)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java Mon Sep  5 10:35:35 2011
@@ -0,0 +1,168 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.util;
+
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.Processor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A {@link Processor} which just logs to a {@link CamelLogger} object which can be used
+ * as an exception handler instead of using a dead letter queue.
+ * <p/>
+ * The name <tt>CamelLogger</tt> has been chosen to avoid any name clash with log kits
+ * which has a <tt>Logger</tt> class.
+ *
+ * @version 
+ */
+public class CamelLogger {
+    private Logger log;
+    private LoggingLevel level;
+
+    public CamelLogger() {
+        this(LoggerFactory.getLogger(CamelLogger.class));
+    }
+
+    public CamelLogger(Logger log) {
+        this(log, LoggingLevel.INFO);
+    }
+
+    public CamelLogger(Logger log, LoggingLevel level) {
+        this.log = log;
+        this.level = level;
+    }
+
+    public CamelLogger(String logName) {
+        this(LoggerFactory.getLogger(logName));
+    }
+
+    public CamelLogger(String logName, LoggingLevel level) {
+        this(LoggerFactory.getLogger(logName), level);
+    }
+
+    @Override
+    public String toString() {
+        return "Logger[" + log + "]";
+    }
+
+    public void log(String message, LoggingLevel loggingLevel) {
+        LoggingLevel oldLogLevel = getLevel();
+        setLevel(loggingLevel);
+        log(message);
+        setLevel(oldLogLevel);
+    }
+    
+    public void log(String message) {
+        if (shouldLog(log, level)) {
+            log(log, level,message);
+        }
+    }
+
+    public void log(String message, Throwable exception, LoggingLevel loggingLevel) {
+        log(log, loggingLevel, message, exception);
+    }   
+    
+    public void log(String message, Throwable exception) {
+        if (shouldLog(log, level)) {
+            log(log, level, message, exception);
+        }
+    }
+
+    public Logger getLog() {
+        return log;
+    }
+
+    public void setLog(Logger log) {
+        this.log = log;
+    }
+
+    public LoggingLevel getLevel() {
+        return level;
+    }
+
+    public void setLevel(LoggingLevel level) {
+        this.level = level;
+    }
+
+    public void setLogName(String logName) {
+        this.log = LoggerFactory.getLogger(logName);
+    }
+
+    public static boolean shouldLog(Logger log, LoggingLevel level) {
+        if (level == null) {
+            throw new NullPointerException("Log level may not be null");
+        }
+        return level == LoggingLevel.DEBUG && log.isDebugEnabled() 
+            || level == LoggingLevel.ERROR && log.isErrorEnabled()
+            || level == LoggingLevel.INFO && log.isInfoEnabled()
+            || level == LoggingLevel.TRACE && log.isTraceEnabled()
+            || level == LoggingLevel.WARN && log.isWarnEnabled();
+    }
+
+    public static void log(Logger log, LoggingLevel level, String message) {
+        if (level == null) {
+            throw new NullPointerException("Log level may not be null");
+        }
+        switch (level) {
+        case DEBUG:
+            log.debug(message);
+            break;
+        case ERROR:
+            log.error(message);
+            break;
+        case INFO:
+            log.info(message);
+            break;
+        case TRACE:
+            log.trace(message);
+            break;
+        case WARN:
+            log.warn(message);
+            break;
+        }
+    }
+    
+    public static void log(Logger log, LoggingLevel level, String message, Throwable th) {
+        if (level == null) {
+            throw new NullPointerException("Log level may not be null");
+        }
+        switch (level) {
+        case DEBUG:
+            log.debug(message, th);
+            break;
+        case ERROR:
+            log.error(message, th);
+            break;
+        case INFO:
+            log.info(message, th);
+            break;
+        case TRACE:
+            log.trace(message, th);
+            break;
+        case WARN:
+            log.warn(message, th);
+            break;
+        }
+    }
+
+    public boolean shouldLog() {
+        return CamelLogger.shouldLog(log, level);
+    }
+
+}

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java Mon Sep  5 10:35:35 2011
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSuppo
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.processor.CamelLogProcessor;
 
 /**
  * @version 
@@ -29,7 +29,7 @@ public class LogEndpointTest extends Con
 
     private static Exchange logged;
 
-    private static class MyLogger extends CamelLogger {
+    private static class MyLogger extends CamelLogProcessor {
 
         @Override
         public void process(Exchange exchange) {
@@ -64,7 +64,6 @@ public class LogEndpointTest extends Con
                 end.setLogger(new MyLogger());
 
                 assertEquals("log:myLogger", end.getEndpointUri());
-                assertNotNull(end.getLogger());
 
                 from("direct:start").to(end).to("mock:result");
             }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThroughPutLoggerTest.java Mon Sep  5 10:35:35 2011
@@ -16,16 +16,27 @@
  */
 package org.apache.camel.processor;
 
+import org.apache.camel.util.CamelLogger;
+import org.easymock.EasyMock;
+import org.slf4j.Logger;
 import junit.framework.TestCase;
 
 public class ThroughPutLoggerTest extends TestCase {
 
     public void testLogStringDurationIsNotZero() throws Exception {
-        ThroughputLogger underTest = new ThroughputLogger(10);
+        Logger logger = EasyMock.createMock(Logger.class);
+        logger.isInfoEnabled();
+        EasyMock.expectLastCall().andReturn(true).atLeastOnce();
+        logger.info(EasyMock.startsWith("Received: 10"));
+        EasyMock.expectLastCall().once();
+        logger.info(EasyMock.startsWith("Received: 20"));
+        EasyMock.expectLastCall().once();
+        EasyMock.replay(logger);
+        ThroughputLogger underTest = new ThroughputLogger(new CamelLogger(logger));
+        underTest.setGroupSize(10);
         for (int i = 0; i < 25; i++) {
             underTest.process(null);
         }
-        String message = (String) underTest.logMessage(null);
-        assertTrue("consumed 20 :" + message, message.contains("20"));
+        EasyMock.verify(logger);
     }
 }

Propchange: camel/trunk/components/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Sep  5 10:35:35 2011
@@ -1 +1,3 @@
 target
+.project
+.settings

Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java Mon Sep  5 10:35:35 2011
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.jms;
 
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
 import javax.jms.ConnectionFactory;
 import javax.jms.DeliveryMode;
 import javax.jms.ExceptionListener;
@@ -28,7 +30,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.impl.JndiRegistry;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
@@ -40,13 +41,18 @@ import org.springframework.jms.listener.
 import org.springframework.jms.support.converter.SimpleMessageConverter;
 import org.springframework.util.ErrorHandler;
 
-import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
-
 /**
  * @version 
  */
 public class JmsEndpointConfigurationTest extends CamelTestSupport {
 
+    private final class FailProcessor implements Processor {
+        @Override
+        public void process(Exchange exchange) throws Exception {
+            fail("Should not be reached");
+        }
+    }
+
     private ConnectionFactory cf = new ActiveMQConnectionFactory("vm:myBroker");
 
     private Processor dummyProcessor = new Processor() {
@@ -182,7 +188,7 @@ public class JmsEndpointConfigurationTes
     public void testInvalidMaxConcurrentConsumers() throws Exception {
         JmsEndpoint endpoint = (JmsEndpoint) resolveMandatoryEndpoint("jms:queue:Foo?concurrentConsumers=5&maxConcurrentConsumers=2");
         try {
-            endpoint.createConsumer(new CamelLogger());
+            endpoint.createConsumer(new FailProcessor());
             fail("Should have thrown exception");
         } catch (IllegalArgumentException e) {
             assertEquals("Property maxConcurrentConsumers: 2 must be higher than concurrentConsumers: 5", e.getMessage());
@@ -194,7 +200,7 @@ public class JmsEndpointConfigurationTes
         JmsEndpoint endpoint = (JmsEndpoint) resolveMandatoryEndpoint("jms:queue:Foo?concurrentConsumers=5&maxConcurrentConsumers=2&consumerType=Simple");
 
         try {
-            endpoint.createConsumer(new CamelLogger());
+            endpoint.createConsumer(new FailProcessor());
             fail("Should have thrown exception");
         } catch (IllegalArgumentException e) {
             assertEquals("Property maxConcurrentConsumers: 2 must be higher than concurrentConsumers: 5", e.getMessage());

Modified: camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
+++ camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Mon Sep  5 10:35:35 2011
@@ -23,7 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultConsumer;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.IoHandler;

Modified: camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java (original)
+++ camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java Mon Sep  5 10:35:35 2011
@@ -26,7 +26,7 @@ import org.apache.camel.ExchangeTimedOut
 import org.apache.camel.ServicePoolAware;
 import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.mina.common.ConnectFuture;
 import org.apache.mina.common.IoConnector;

Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java (original)
+++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyProducer.java Mon Sep  5 10:35:35 2011
@@ -29,7 +29,7 @@ import org.apache.camel.ServicePoolAware
 import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultAsyncProducer;
 import org.apache.camel.impl.DefaultExchange;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
 import org.jboss.netty.bootstrap.ClientBootstrap;
 import org.jboss.netty.bootstrap.ConnectionlessBootstrap;

Modified: camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ServerChannelHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ServerChannelHandler.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ServerChannelHandler.java (original)
+++ camel/trunk/components/camel-netty/src/main/java/org/apache/camel/component/netty/handlers/ServerChannelHandler.java Mon Sep  5 10:35:35 2011
@@ -23,7 +23,7 @@ import org.apache.camel.component.netty.
 import org.apache.camel.component.netty.NettyHelper;
 import org.apache.camel.component.netty.NettyPayloadHelper;
 import org.apache.camel.converter.IOConverter;
-import org.apache.camel.processor.CamelLogger;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ExchangeHelper;
 import org.jboss.netty.channel.ChannelHandler;
 import org.jboss.netty.channel.ChannelHandlerContext;

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java Mon Sep  5 10:35:35 2011
@@ -21,10 +21,10 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.RedeliveryErrorHandler;
 import org.apache.camel.processor.RedeliveryPolicy;
 import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.springframework.transaction.TransactionDefinition;
 import org.springframework.transaction.TransactionStatus;

Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java Mon Sep  5 10:35:35 2011
@@ -21,9 +21,9 @@ import java.util.Map;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.spi.TransactedPolicy;
+import org.apache.camel.util.CamelLogger;
 import org.apache.camel.util.ObjectHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

Modified: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogTest-context.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogTest-context.xml?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogTest-context.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogTest-context.xml Mon Sep  5 10:35:35 2011
@@ -26,7 +26,7 @@
         <property name="logger" ref="myLogger"/>
     </bean>
 
-    <bean id="myLogger" class="org.apache.camel.processor.CamelLogger">
+    <bean id="myLogger" class="org.apache.camel.processor.CamelLogProcessor">
         <property name="level" value="WARN"/>
         <property name="logName" value="cool"/>
     </bean>

Modified: camel/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=1165232&r1=1165231&r2=1165232&view=diff
==============================================================================
--- camel/trunk/parent/pom.xml (original)
+++ camel/trunk/parent/pom.xml Mon Sep  5 10:35:35 2011
@@ -1286,6 +1286,11 @@
       </dependency>
       <dependency>
         <groupId>org.easymock</groupId>
+        <artifactId>easymock</artifactId>
+        <version>${easymock-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.easymock</groupId>
         <artifactId>easymockclassextension</artifactId>
         <version>${easymock-version}</version>
       </dependency>