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 2011/12/23 06:31:09 UTC

svn commit: r1222567 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/processor/LogProcessor.java main/java/org/apache/camel/util/CamelLogger.java test/java/org/apache/camel/processor/LogProcessorTest.java

Author: davsclaus
Date: Fri Dec 23 05:31:08 2011
New Revision: 1222567

URL: http://svn.apache.org/viewvc?rev=1222567&view=rev
Log:
CAMEL-4823: Optimized log EIP to only evaluate if should log.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LogProcessor.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LogProcessorTest.java

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=1222567&r1=1222566&r2=1222567&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 Fri Dec 23 05:31:08 2011
@@ -46,8 +46,10 @@ public class LogProcessor implements Asy
     @Override
     public boolean process(Exchange exchange, AsyncCallback callback) {
         try {
-            String msg = expression.evaluate(exchange, String.class);
-            logger.log(msg);
+            if (logger.shouldLog()) {
+                String msg = expression.evaluate(exchange, String.class);
+                logger.doLog(msg);
+            }
         } catch (Exception e) {
             exchange.setException(e);
         } finally {

Modified: 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=1222567&r1=1222566&r2=1222567&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/CamelLogger.java Fri Dec 23 05:31:08 2011
@@ -79,13 +79,27 @@ public class CamelLogger {
         log(message);
         setLevel(oldLogLevel);
     }
-    
+
+    /**
+     * Logs the message <b>with</b> checking the {@link #shouldLog()} method first.
+     *
+     * @param message the message to log, if {@link #shouldLog()} returned <tt>true</tt>
+     */
     public void log(String message) {
         if (shouldLog(log, level)) {
             log(log, level, marker, message);
         }
     }
 
+    /**
+     * Logs the message <b>without</b> checking the {@link #shouldLog()} method first.
+     * 
+     * @param message the message to log
+     */
+    public void doLog(String message) {
+        log(log, level, marker, message);
+    }
+
     public void log(String message, Throwable exception, LoggingLevel loggingLevel) {
         log(log, loggingLevel, marker, message, exception);
     }   

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LogProcessorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LogProcessorTest.java?rev=1222567&r1=1222566&r2=1222567&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LogProcessorTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/LogProcessorTest.java Fri Dec 23 05:31:08 2011
@@ -57,6 +57,14 @@ public class LogProcessorTest extends Co
         assertMockEndpointsSatisfied();
     }
 
+    public void testNoLog() throws Exception {
+        getMockEndpoint("mock:bar").expectedMessageCount(1);
+
+        template.sendBody("direct:nolog", "Hi World");
+
+        assertMockEndpointsSatisfied();
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
@@ -71,6 +79,8 @@ public class LogProcessorTest extends Co
                 from("direct:wombat").routeId("wombat")
                     .log(LoggingLevel.INFO, "cool", "mymarker", "Me got ${body}")
                     .to("mock:wombat");
+
+                from("direct:nolog").routeId("nolog").log(LoggingLevel.TRACE, "Should not log ${body}").to("mock:bar");
             }
         };
     }