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