Author: davsclaus
Date: Tue Nov 22 09:49:30 2011
New Revision: 1204883

URL: http://svn.apache.org/viewvc?rev=1204883&view=rev
Log:
CAMEL-4607: Added support for sl4j Marker to log DSL. Thanks to Taariq for the 
patch.

Added:
    
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
   (with props)
    
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
   (with props)
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.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/model/LogDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/LogDefinition.java?rev=1204883&r1=1204882&r2=1204883&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 
Tue Nov 22 09:49:30 2011
@@ -43,6 +43,8 @@ public class LogDefinition extends NoOut
     private LoggingLevel loggingLevel;
     @XmlAttribute
     private String logName;
+    @XmlAttribute
+    private String marker;
 
     public LogDefinition() {
     }
@@ -79,7 +81,7 @@ public class LogDefinition extends NoOut
         }
         // should be INFO by default
         LoggingLevel level = getLoggingLevel() != null ? getLoggingLevel() : 
LoggingLevel.INFO;
-        CamelLogger logger = new CamelLogger(name, level);
+        CamelLogger logger = new CamelLogger(name, level, getMarker());
 
         return new LogProcessor(exp, logger);
     }
@@ -114,4 +116,11 @@ public class LogDefinition extends NoOut
         this.logName = logName;
     }
 
+    public String getMarker() {
+        return marker;
+    }
+
+    public void setMarker(String marker) {
+        this.marker = marker;
+    }
 }
\ No newline at end of file

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=1204883&r1=1204882&r2=1204883&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 Tue Nov 22 09:49:30 2011
@@ -1422,6 +1422,26 @@ public abstract class ProcessorDefinitio
     }
 
     /**
+     * Creates a log message to be logged at the given level and name.
+     *
+     *
+     * @param loggingLevel the logging level to use
+     * @param logName the log name to use
+     * @param marker  log marker name
+     * @param message the log message, (you can use {@link 
org.apache.camel.language.simple.SimpleLanguage} syntax)
+     * @return the builder
+     */
+    @SuppressWarnings("unchecked")
+    public Type log(LoggingLevel loggingLevel, String logName, String marker, 
String message) {
+        LogDefinition answer = new LogDefinition(message);
+        answer.setLoggingLevel(loggingLevel);
+        answer.setLogName(logName);
+        answer.setMarker(marker);
+        addOutput(answer);
+        return (Type) this;
+    }
+
+    /**
      * <a href="http://camel.apache.org/content-based-router.html";>Content 
Based Router EIP:</a>
      * Creates a choice of one or more predicates with an otherwise clause
      *

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java?rev=1204883&r1=1204882&r2=1204883&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/CamelLogProcessor.java
 Tue Nov 22 09:49:30 2011
@@ -84,6 +84,10 @@ public class CamelLogProcessor implement
         log.setLevel(level);
     }
 
+    public void setMarker(String marker) {
+        log.setMarker(marker);
+    }
+
     static class DefaultExchangeFormatter implements ExchangeFormatter {
         public String format(Exchange exchange) {
             return exchange.toString();

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=1204883&r1=1204882&r2=1204883&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 
Tue Nov 22 09:49:30 2011
@@ -21,6 +21,8 @@ import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.Marker;
+import org.slf4j.MarkerFactory;
 
 /**
  * A {@link Processor} which just logs to a {@link CamelLogger} object which 
can be used
@@ -34,6 +36,7 @@ import org.slf4j.LoggerFactory;
 public class CamelLogger {
     private Logger log;
     private LoggingLevel level;
+    private Marker marker;
 
     public CamelLogger() {
         this(LoggerFactory.getLogger(CamelLogger.class));
@@ -44,8 +47,13 @@ public class CamelLogger {
     }
 
     public CamelLogger(Logger log, LoggingLevel level) {
+        this(log, level, null);
+    }
+
+    public CamelLogger(Logger log, LoggingLevel level, String marker) {
         this.log = log;
         setLevel(level);
+        setMarker(marker);
     }
 
     public CamelLogger(String logName) {
@@ -53,7 +61,11 @@ public class CamelLogger {
     }
 
     public CamelLogger(String logName, LoggingLevel level) {
-        this(LoggerFactory.getLogger(logName), level);
+        this(logName, level, null);
+    }
+
+    public CamelLogger(String logName, LoggingLevel level, String marker) {
+        this(LoggerFactory.getLogger(logName), level, marker);
     }
 
     @Override
@@ -70,17 +82,17 @@ public class CamelLogger {
     
     public void log(String message) {
         if (shouldLog(log, level)) {
-            log(log, level, message);
+            log(log, level, marker, message);
         }
     }
 
     public void log(String message, Throwable exception, LoggingLevel 
loggingLevel) {
-        log(log, loggingLevel, message, exception);
+        log(log, loggingLevel, marker, message, exception);
     }   
     
     public void log(String message, Throwable exception) {
         if (shouldLog(log, level)) {
-            log(log, level, message, exception);
+            log(log, level, marker, message, exception);
         }
     }
 
@@ -108,6 +120,18 @@ public class CamelLogger {
         this.log = LoggerFactory.getLogger(logName);
     }
 
+    public void setMarker(Marker marker) {
+        this.marker = marker;
+    }
+
+    public void setMarker(String marker) {
+        if (ObjectHelper.isNotEmpty(marker)) {
+            this.marker = MarkerFactory.getMarker(marker);
+        } else {
+            this.marker = null;
+        }
+    }
+
     public static void log(Logger log, LoggingLevel level, String message) {
         switch (level) {
         case DEBUG:
@@ -128,7 +152,28 @@ public class CamelLogger {
         default:
         }
     }
-    
+
+    public static void log(Logger log, LoggingLevel level, Marker marker, 
String message) {
+        switch (level) {
+        case DEBUG:
+            log.debug(marker, message);
+            break;
+        case ERROR:
+            log.error(marker, message);
+            break;
+        case INFO:
+            log.info(marker, message);
+            break;
+        case TRACE:
+            log.trace(marker, message);
+            break;
+        case WARN:
+            log.warn(marker, message);
+            break;
+        default:
+        }
+    }
+
     public static void log(Logger log, LoggingLevel level, String message, 
Throwable th) {
         switch (level) {
         case DEBUG:
@@ -150,6 +195,27 @@ public class CamelLogger {
         }
     }
 
+    public static void log(Logger log, LoggingLevel level, Marker marker, 
String message, Throwable th) {
+        switch (level) {
+        case DEBUG:
+            log.debug(marker, message, th);
+            break;
+        case ERROR:
+            log.error(marker, message, th);
+            break;
+        case INFO:
+            log.info(marker, message, th);
+            break;
+        case TRACE:
+            log.trace(marker, message, th);
+            break;
+        case WARN:
+            log.warn(marker, message, th);
+            break;
+        default:
+        }
+    }
+
     public boolean shouldLog() {
         return CamelLogger.shouldLog(log, level);
     }

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=1204883&r1=1204882&r2=1204883&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
 Tue Nov 22 09:49:30 2011
@@ -49,6 +49,14 @@ public class LogProcessorTest extends Co
         assertMockEndpointsSatisfied();
     }
 
+    public void testLogProcessorMarker() throws Exception {
+        getMockEndpoint("mock:wombat").expectedMessageCount(1);
+
+        template.sendBody("direct:wombat", "Hi Wombat");
+
+        assertMockEndpointsSatisfied();
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
@@ -59,6 +67,10 @@ public class LogProcessorTest extends Co
                 from("direct:bar").routeId("bar").log(LoggingLevel.WARN, "Also 
got ${body}").to("mock:bar");
 
                 from("direct:baz").routeId("baz").log(LoggingLevel.ERROR, 
"cool", "Me got ${body}").to("mock:baz");
+
+                from("direct:wombat").routeId("wombat")
+                    .log(LoggingLevel.INFO, "cool", "mymarker", "Me got 
${body}")
+                    .to("mock:wombat");
             }
         };
     }

Added: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java?rev=1204883&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
 Tue Nov 22 09:49:30 2011
@@ -0,0 +1,43 @@
+/**
+ * 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.component.log;
+
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spring.SpringTestSupport;
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @version 
+ */
+public class SpringLogMarkerTest extends SpringTestSupport {
+    protected Object expectedBody = "Hello there!";
+    protected String uri = "direct:start";
+
+    public void 
testSendingCamelExchangeToEndpointResultsInValidApplicationEventAfterTheRefreshEvent()
 throws Exception {
+        MockEndpoint result = resolveMandatoryEndpoint("mock:result", 
MockEndpoint.class);
+        result.expectedMessageCount(1);
+
+        template.sendBody(uri, expectedBody);
+
+        result.assertIsSatisfied();
+    }
+
+    protected AbstractXmlApplicationContext createApplicationContext() {
+        return new 
ClassPathXmlApplicationContext("org/apache/camel/component/log/SpringLogMarkerTest-context.xml");
+    }
+}
\ No newline at end of file

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/component/log/SpringLogMarkerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml?rev=1204883&view=auto
==============================================================================
--- 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
 (added)
+++ 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
 Tue Nov 22 09:49:30 2011
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring.xsd
+    ">
+
+    <bean id="log" class="org.apache.camel.component.log.LogEndpoint">
+        <property name="logger" ref="myLogger"/>
+    </bean>
+
+    <bean id="myLogger" class="org.apache.camel.processor.CamelLogProcessor">
+        <property name="level" value="WARN"/>
+        <property name="logName" value="cool"/>
+        <property name="marker" value="testMarker"/>
+    </bean>
+
+    <camelContext xmlns="http://camel.apache.org/schema/spring";>
+        <route>
+            <from uri="direct:start"/>
+            <to ref="log"/>
+            <log message="Another log message" logName="org.apache.camel" 
marker="myMarker" loggingLevel="DEBUG"/>
+            <to uri="mock:result"/>
+        </route>
+    </camelContext>
+
+</beans>

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: 
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/component/log/SpringLogMarkerTest-context.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml


Reply via email to