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 2014/04/04 08:36:46 UTC
[01/13] git commit: [CAMEL-6694] Allow user to pass logger instance
in camel-log endpoint URI
Repository: camel
Updated Branches:
refs/heads/camel-2.12.x 773e5dab8 -> c8b677e86
refs/heads/camel-2.13.x 923cdb1e9 -> 653f8d6f2
refs/heads/master 5f6477c6f -> fc91c5883
[CAMEL-6694] Allow user to pass logger instance in camel-log endpoint
URI
The URI has form: log:logger-name?level=info&logger=#mylogger
"mylogger" is registered in context's registry
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d09cfdd5
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d09cfdd5
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d09cfdd5
Branch: refs/heads/master
Commit: d09cfdd5d273804b2a65ee83ec70175abd371a93
Parents: 21123a1
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Tue Apr 1 12:06:36 2014 +0200
Committer: Grzegorz Grzybek <gr...@gmail.com>
Committed: Thu Apr 3 10:39:15 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 20 +++++++-
.../camel/itest/osgi/core/log/LogRouteTest.java | 48 +++++++++++++++++++-
.../src/test/resources/log4j.properties | 13 ++++++
3 files changed, 79 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/d09cfdd5/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 250d745..b3dc3a7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.util.CamelLogger;
+import org.slf4j.Logger;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -45,12 +46,18 @@ public class LogComponent extends UriEndpointComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
+ Logger providedLogger = getLogger(parameters);
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ CamelLogger camelLogger = null;
+ if (providedLogger == null) {
+ camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ } else {
+ camelLogger = new CamelLogger(providedLogger, level, endpoint.getMarker());
+ }
Processor logger;
if (endpoint.getGroupSize() != null) {
logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
@@ -89,6 +96,17 @@ public class LogComponent extends UriEndpointComponent {
return LoggingLevel.valueOf(levelText.toUpperCase(Locale.ENGLISH));
}
+ /**
+ * Gets optional {@link Logger} instance from parameters. If non-null, the provided instance will be used as
+ * {@link Logger} in {@link CamelLogger}
+ *
+ * @param parameters
+ * @return
+ */
+ protected Logger getLogger(Map<String, Object> parameters) {
+ return getAndRemoveOrResolveReferenceParameter(parameters, "logger", Logger.class);
+ }
+
public ExchangeFormatter getExchangeFormatter() {
return exchangeFormatter;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/d09cfdd5/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index 09e4ebc..e7faed4 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,10 +16,21 @@
*/
package org.apache.camel.itest.osgi.core.log;
+import java.io.File;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -40,6 +51,14 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
+ public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
+ }
+
+ @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -53,6 +72,33 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
public boolean isUseRouteBuilder() {
return false;
}
-
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry registry = super.createRegistry();
+ registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ return registry;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ Option[] options = combine(
+ getDefaultCamelKarafOptions(),
+ new Option[] {
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
+// KarafDistributionOption.debugConfiguration("9999", true)
+ });
+ return options;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/d09cfdd5/tests/camel-itest-osgi/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/resources/log4j.properties b/tests/camel-itest-osgi/src/test/resources/log4j.properties
index dbf1670..2b05265 100644
--- a/tests/camel-itest-osgi/src/test/resources/log4j.properties
+++ b/tests/camel-itest-osgi/src/test/resources/log4j.properties
@@ -29,6 +29,9 @@ log4j.logger.org.apache.activemq.spring=WARN
# is very noisy at INFO level
log4j.logger.org.ops4j.io=WARN
+# sift test
+log4j.logger.org.apache.camel.SIFT=DEBUG, sift
+
# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
@@ -40,3 +43,13 @@ log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
log4j.appender.out.file=target/camel-itest-osgi-test.log
log4j.appender.out.append=true
+
+# Sift appender
+log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
+log4j.appender.sift.key=bundle.name
+log4j.appender.sift.default=karaf
+log4j.appender.sift.appender=org.apache.log4j.FileAppender
+log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | id=%X{camel.exchangeId} | %X{bundle.name} | %-5.5p | %-32.32C %4L | %m%n
+log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
+log4j.appender.sift.appender.append=true
[09/13] git commit: CAMEL-6694: Fixed CS
Posted by da...@apache.org.
CAMEL-6694: Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/653f8d6f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/653f8d6f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/653f8d6f
Branch: refs/heads/camel-2.13.x
Commit: 653f8d6f27c056631e76d8aa3f40199a522dbb71
Parents: 0f5db8c
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Apr 4 08:38:19 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:19 2014 +0200
----------------------------------------------------------------------
.../apache/camel/component/log/LogCustomLoggerTest.java | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/653f8d6f/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
index 7114f53..908b8c8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -16,21 +16,22 @@
*/
package org.apache.camel.component.log;
+import java.io.StringWriter;
+
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.impl.SimpleRegistry;
-import org.apache.log4j.*;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
-import java.io.StringWriter;
-
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@@ -44,7 +45,7 @@ public class LogCustomLoggerTest extends ContextTestSupport {
// to capture the warnings from LogComponent
private static StringWriter sw2;
- private static class CapturingAppender extends AppenderSkeleton {
+ private static final class CapturingAppender extends AppenderSkeleton {
private StringWriter sw;
private CapturingAppender(StringWriter sw) {
[13/13] git commit: CAMEL-6694: Fixed CS
Posted by da...@apache.org.
CAMEL-6694: Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c8b677e8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c8b677e8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c8b677e8
Branch: refs/heads/camel-2.12.x
Commit: c8b677e86381cd738184a19af79003dca73b51f5
Parents: b79265f
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Apr 4 08:38:19 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:40:13 2014 +0200
----------------------------------------------------------------------
.../apache/camel/component/log/LogCustomLoggerTest.java | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/c8b677e8/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
index 7114f53..908b8c8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -16,21 +16,22 @@
*/
package org.apache.camel.component.log;
+import java.io.StringWriter;
+
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.impl.SimpleRegistry;
-import org.apache.log4j.*;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
-import java.io.StringWriter;
-
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@@ -44,7 +45,7 @@ public class LogCustomLoggerTest extends ContextTestSupport {
// to capture the warnings from LogComponent
private static StringWriter sw2;
- private static class CapturingAppender extends AppenderSkeleton {
+ private static final class CapturingAppender extends AppenderSkeleton {
private StringWriter sw;
private CapturingAppender(StringWriter sw) {
[06/13] git commit: [CAMEL-6694] Allow user to pass logger instance
in camel-log endpoint URI
Posted by da...@apache.org.
[CAMEL-6694] Allow user to pass logger instance in camel-log endpoint
URI
The URI has form: log:logger-name?level=info&logger=#mylogger
"mylogger" is registered in context's registry
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fe8360f3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fe8360f3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fe8360f3
Branch: refs/heads/camel-2.13.x
Commit: fe8360f38fb9b99fbce02a0a6ad150ac7d9ae133
Parents: 923cdb1
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Tue Apr 1 12:06:36 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:38:55 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 20 +++++++-
.../camel/itest/osgi/core/log/LogRouteTest.java | 48 +++++++++++++++++++-
.../src/test/resources/log4j.properties | 13 ++++++
3 files changed, 79 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/fe8360f3/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 250d745..b3dc3a7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.util.CamelLogger;
+import org.slf4j.Logger;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -45,12 +46,18 @@ public class LogComponent extends UriEndpointComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
+ Logger providedLogger = getLogger(parameters);
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ CamelLogger camelLogger = null;
+ if (providedLogger == null) {
+ camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ } else {
+ camelLogger = new CamelLogger(providedLogger, level, endpoint.getMarker());
+ }
Processor logger;
if (endpoint.getGroupSize() != null) {
logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
@@ -89,6 +96,17 @@ public class LogComponent extends UriEndpointComponent {
return LoggingLevel.valueOf(levelText.toUpperCase(Locale.ENGLISH));
}
+ /**
+ * Gets optional {@link Logger} instance from parameters. If non-null, the provided instance will be used as
+ * {@link Logger} in {@link CamelLogger}
+ *
+ * @param parameters
+ * @return
+ */
+ protected Logger getLogger(Map<String, Object> parameters) {
+ return getAndRemoveOrResolveReferenceParameter(parameters, "logger", Logger.class);
+ }
+
public ExchangeFormatter getExchangeFormatter() {
return exchangeFormatter;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/fe8360f3/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index 09e4ebc..e7faed4 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,10 +16,21 @@
*/
package org.apache.camel.itest.osgi.core.log;
+import java.io.File;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -40,6 +51,14 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
+ public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
+ }
+
+ @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -53,6 +72,33 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
public boolean isUseRouteBuilder() {
return false;
}
-
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry registry = super.createRegistry();
+ registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ return registry;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ Option[] options = combine(
+ getDefaultCamelKarafOptions(),
+ new Option[] {
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
+// KarafDistributionOption.debugConfiguration("9999", true)
+ });
+ return options;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/fe8360f3/tests/camel-itest-osgi/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/resources/log4j.properties b/tests/camel-itest-osgi/src/test/resources/log4j.properties
index dbf1670..2b05265 100644
--- a/tests/camel-itest-osgi/src/test/resources/log4j.properties
+++ b/tests/camel-itest-osgi/src/test/resources/log4j.properties
@@ -29,6 +29,9 @@ log4j.logger.org.apache.activemq.spring=WARN
# is very noisy at INFO level
log4j.logger.org.ops4j.io=WARN
+# sift test
+log4j.logger.org.apache.camel.SIFT=DEBUG, sift
+
# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
@@ -40,3 +43,13 @@ log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
log4j.appender.out.file=target/camel-itest-osgi-test.log
log4j.appender.out.append=true
+
+# Sift appender
+log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
+log4j.appender.sift.key=bundle.name
+log4j.appender.sift.default=karaf
+log4j.appender.sift.appender=org.apache.log4j.FileAppender
+log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | id=%X{camel.exchangeId} | %X{bundle.name} | %-5.5p | %-32.32C %4L | %m%n
+log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
+log4j.appender.sift.appender.append=true
[10/13] git commit: [CAMEL-6694] Allow user to pass logger instance
in camel-log endpoint URI
Posted by da...@apache.org.
[CAMEL-6694] Allow user to pass logger instance in camel-log endpoint
URI
The URI has form: log:logger-name?level=info&logger=#mylogger
"mylogger" is registered in context's registry
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/043449cb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/043449cb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/043449cb
Branch: refs/heads/camel-2.12.x
Commit: 043449cb2cc1453471adebd9bc15205732764ee9
Parents: 773e5da
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Tue Apr 1 12:06:36 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:40 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 20 +++++++-
.../camel/itest/osgi/core/log/LogRouteTest.java | 48 +++++++++++++++++++-
.../src/test/resources/log4j.properties | 13 ++++++
3 files changed, 79 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/043449cb/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index 250d745..b3dc3a7 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.util.CamelLogger;
+import org.slf4j.Logger;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -45,12 +46,18 @@ public class LogComponent extends UriEndpointComponent {
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
+ Logger providedLogger = getLogger(parameters);
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ CamelLogger camelLogger = null;
+ if (providedLogger == null) {
+ camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
+ } else {
+ camelLogger = new CamelLogger(providedLogger, level, endpoint.getMarker());
+ }
Processor logger;
if (endpoint.getGroupSize() != null) {
logger = new ThroughputLogger(camelLogger, endpoint.getGroupSize());
@@ -89,6 +96,17 @@ public class LogComponent extends UriEndpointComponent {
return LoggingLevel.valueOf(levelText.toUpperCase(Locale.ENGLISH));
}
+ /**
+ * Gets optional {@link Logger} instance from parameters. If non-null, the provided instance will be used as
+ * {@link Logger} in {@link CamelLogger}
+ *
+ * @param parameters
+ * @return
+ */
+ protected Logger getLogger(Map<String, Object> parameters) {
+ return getAndRemoveOrResolveReferenceParameter(parameters, "logger", Logger.class);
+ }
+
public ExchangeFormatter getExchangeFormatter() {
return exchangeFormatter;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/043449cb/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index 09e4ebc..e7faed4 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,10 +16,21 @@
*/
package org.apache.camel.itest.osgi.core.log;
+import java.io.File;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -40,6 +51,14 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
+ public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
+ }
+
+ @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -53,6 +72,33 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
public boolean isUseRouteBuilder() {
return false;
}
-
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry registry = super.createRegistry();
+ registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ return registry;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ Option[] options = combine(
+ getDefaultCamelKarafOptions(),
+ new Option[] {
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
+// KarafDistributionOption.debugConfiguration("9999", true)
+ });
+ return options;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/043449cb/tests/camel-itest-osgi/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/resources/log4j.properties b/tests/camel-itest-osgi/src/test/resources/log4j.properties
index dbf1670..2b05265 100644
--- a/tests/camel-itest-osgi/src/test/resources/log4j.properties
+++ b/tests/camel-itest-osgi/src/test/resources/log4j.properties
@@ -29,6 +29,9 @@ log4j.logger.org.apache.activemq.spring=WARN
# is very noisy at INFO level
log4j.logger.org.ops4j.io=WARN
+# sift test
+log4j.logger.org.apache.camel.SIFT=DEBUG, sift
+
# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
@@ -40,3 +43,13 @@ log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
log4j.appender.out.file=target/camel-itest-osgi-test.log
log4j.appender.out.append=true
+
+# Sift appender
+log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
+log4j.appender.sift.key=bundle.name
+log4j.appender.sift.default=karaf
+log4j.appender.sift.appender=org.apache.log4j.FileAppender
+log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | id=%X{camel.exchangeId} | %X{bundle.name} | %-5.5p | %-32.32C %4L | %m%n
+log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
+log4j.appender.sift.appender.append=true
[08/13] git commit: [CAMEL-6694] Added OSGi integration tests for
logging with MDC SIFT logger
Posted by da...@apache.org.
[CAMEL-6694] Added OSGi integration tests for logging with MDC SIFT logger
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0f5db8ce
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0f5db8ce
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0f5db8ce
Branch: refs/heads/camel-2.13.x
Commit: 0f5db8ce2adf4bbbc308d3d0f3d9a8f1990ffa71
Parents: 426fa8e
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 13:38:07 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:11 2014 +0200
----------------------------------------------------------------------
.../camel/itest/osgi/core/log/LogRouteTest.java | 46 ---------
...ogRouteWithLoggersPresentInRegistryTest.java | 98 ++++++++++++++++++++
.../log/LogRouteWithNonDefaultLoggerTest.java | 96 +++++++++++++++++++
3 files changed, 194 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0f5db8ce/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index e7faed4..139daeb 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,21 +16,10 @@
*/
package org.apache.camel.itest.osgi.core.log;
-import java.io.File;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
-import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
-import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
-import org.slf4j.LoggerFactory;
-
-import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -51,14 +40,6 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
- public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
- }
-
- @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -73,32 +54,5 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
return false;
}
- @Override
- protected CamelContext createCamelContext() throws Exception {
- CamelContext camelContext = super.createCamelContext();
- camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
- camelContext.setUseMDCLogging(true);
- return camelContext;
- }
-
- @Override
- protected JndiRegistry createRegistry() throws Exception {
- JndiRegistry registry = super.createRegistry();
- registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
- return registry;
- }
-
- @Configuration
- public static Option[] configure() throws Exception {
- Option[] options = combine(
- getDefaultCamelKarafOptions(),
- new Option[] {
- new DoNotModifyLogOption(),
- new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
-// KarafDistributionOption.debugConfiguration("9999", true)
- });
- return options;
- }
-
}
http://git-wip-us.apache.org/repos/asf/camel/blob/0f5db8ce/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
new file mode 100644
index 0000000..2a15d73
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
@@ -0,0 +1,98 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.not;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithLoggersPresentInRegistryTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger1", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger1", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger1", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToCamelCreatedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), not(equalTo(bundleContext.getBundle().getSymbolicName() + ".log")));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger1", LoggerFactory.getLogger("org.apache.camel.SIFT.l1"));
+ registry.put("mylogger2", LoggerFactory.getLogger("org.apache.camel.SIFT.l2"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/0f5db8ce/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
new file mode 100644
index 0000000..408b7d8
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
@@ -0,0 +1,96 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithNonDefaultLoggerTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToRegistryDefaultLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
[02/13] git commit: [CAMEL-6694] lookup logger in registry when
single instance available
Posted by da...@apache.org.
[CAMEL-6694] lookup logger in registry when single instance available
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7d9f281c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7d9f281c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7d9f281c
Branch: refs/heads/master
Commit: 7d9f281c307a3fe33e99c70cbdae523be980c61e
Parents: d09cfdd
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 12:51:18 2014 +0200
Committer: Grzegorz Grzybek <gr...@gmail.com>
Committed: Thu Apr 3 12:51:18 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 19 ++-
.../component/log/LogCustomLoggerTest.java | 147 +++++++++++++++++++
2 files changed, 163 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7d9f281c/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index b3dc3a7..5eebc25 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -22,13 +22,16 @@ import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.UriEndpointComponent;
import org.apache.camel.processor.CamelLogProcessor;
import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.util.CamelContextHelper;
import org.apache.camel.util.CamelLogger;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -37,22 +40,32 @@ import org.slf4j.Logger;
* @version
*/
public class LogComponent extends UriEndpointComponent {
+ private static final Logger LOG = LoggerFactory.getLogger(LogComponent.class);
private ExchangeFormatter exchangeFormatter;
public LogComponent() {
super(LogEndpoint.class);
}
-
+
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
Logger providedLogger = getLogger(parameters);
+ if (providedLogger == null) {
+ // try to look up the logger in registry
+ Map<String, Logger> availableLoggers = getCamelContext().getRegistry().findByTypeWithName(Logger.class);
+ if (availableLoggers.size() == 1) {
+ providedLogger = availableLoggers.values().iterator().next();
+ } else if (availableLoggers.size() > 1) {
+ LOG.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
+ }
+ }
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = null;
+ CamelLogger camelLogger = null;
if (providedLogger == null) {
camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
} else {
@@ -66,7 +79,7 @@ public class LogComponent extends UriEndpointComponent {
Long groupDelay = endpoint.getGroupDelay();
logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
- // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
+ // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/7d9f281c/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
new file mode 100644
index 0000000..7114f53
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -0,0 +1,147 @@
+/**
+ * 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.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.log4j.*;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
+import java.io.StringWriter;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Custom Logger test.
+ */
+public class LogCustomLoggerTest extends ContextTestSupport {
+
+ // to capture the logs
+ private static StringWriter sw1;
+ // to capture the warnings from LogComponent
+ private static StringWriter sw2;
+
+ private static class CapturingAppender extends AppenderSkeleton {
+ private StringWriter sw;
+
+ private CapturingAppender(StringWriter sw) {
+ this.sw = sw;
+ }
+
+ @Override
+ protected void append(LoggingEvent event) {
+ this.sw.append(event.getLoggerName());
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+ }
+
+ @Before @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ sw1 = new StringWriter();
+ sw2 = new StringWriter();
+ Logger.getLogger(LogCustomLoggerTest.class).removeAllAppenders();
+ Logger.getLogger(LogCustomLoggerTest.class).addAppender(new CapturingAppender(sw1));
+ Logger.getLogger(LogCustomLoggerTest.class).setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger1.name").removeAllAppenders();
+ Logger.getLogger("provided.logger1.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger1.name").setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger2.name").removeAllAppenders();
+ Logger.getLogger("provided.logger2.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger2.name").setLevel(Level.TRACE);
+ Logger.getLogger("irrelevant.logger.name").removeAllAppenders();
+ Logger.getLogger("irrelevant.logger.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("irrelevant.logger.name").setLevel(Level.TRACE);
+ Logger.getLogger(LogComponent.class).removeAllAppenders();
+ Logger.getLogger(LogComponent.class).addAppender(new CapturingAppender(sw2));
+ Logger.getLogger(LogComponent.class).setLevel(Level.TRACE);
+ }
+
+ @Test
+ public void testFallbackLogger() throws Exception {
+ String endpointUri = "log:" + LogCustomLoggerTest.class.getCanonicalName();
+ template.requestBody(endpointUri, "hello");
+ assertThat(sw1.toString(), equalTo(LogCustomLoggerTest.class.getCanonicalName()));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedLogger() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger2.name"));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedNotResolvableLogger() {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ try {
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ } catch (ResolveEndpointFailedException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testDefaultRegistryLogger() throws Exception {
+ getRegistry().put("logger", LoggerFactory.getLogger("provided.logger1.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger1.name"));
+ }
+
+ @Test
+ public void testTwoRegistryLoggers() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("irrelevant.logger.name"));
+ assertThat(sw2.toString(), equalTo(LogComponent.class.getName()));
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ return new DefaultCamelContext(new SimpleRegistry());
+ }
+
+ private SimpleRegistry getRegistry() {
+ SimpleRegistry registry = null;
+ if (context.getRegistry() instanceof PropertyPlaceholderDelegateRegistry) {
+ registry = (SimpleRegistry) ((PropertyPlaceholderDelegateRegistry) context.getRegistry()).getRegistry();
+ } else {
+ fail("Could not determine Registry type");
+ }
+ return registry;
+ }
+
+}
[05/13] git commit: CAMEL-6694: Fixed CS
Posted by da...@apache.org.
CAMEL-6694: Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc91c588
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc91c588
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc91c588
Branch: refs/heads/master
Commit: fc91c5883e4387b3e6d393de7f0a7fc311faeaa2
Parents: 5646830
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Apr 4 08:38:19 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:38:19 2014 +0200
----------------------------------------------------------------------
.../apache/camel/component/log/LogCustomLoggerTest.java | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/fc91c588/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
index 7114f53..908b8c8 100644
--- a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -16,21 +16,22 @@
*/
package org.apache.camel.component.log;
+import java.io.StringWriter;
+
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
import org.apache.camel.impl.SimpleRegistry;
-import org.apache.log4j.*;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
-import java.io.StringWriter;
-
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
@@ -44,7 +45,7 @@ public class LogCustomLoggerTest extends ContextTestSupport {
// to capture the warnings from LogComponent
private static StringWriter sw2;
- private static class CapturingAppender extends AppenderSkeleton {
+ private static final class CapturingAppender extends AppenderSkeleton {
private StringWriter sw;
private CapturingAppender(StringWriter sw) {
[03/13] git commit: [CAMEL-6694] Added OSGi integration tests for
logging with MDC SIFT logger
Posted by da...@apache.org.
[CAMEL-6694] Added OSGi integration tests for logging with MDC SIFT logger
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/45305434
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/45305434
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/45305434
Branch: refs/heads/master
Commit: 45305434b80e3b9168b599f38312969d4d0c115e
Parents: 7d9f281
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 13:38:07 2014 +0200
Committer: Grzegorz Grzybek <gr...@gmail.com>
Committed: Thu Apr 3 13:38:07 2014 +0200
----------------------------------------------------------------------
.../camel/itest/osgi/core/log/LogRouteTest.java | 46 ---------
...ogRouteWithLoggersPresentInRegistryTest.java | 98 ++++++++++++++++++++
.../log/LogRouteWithNonDefaultLoggerTest.java | 96 +++++++++++++++++++
3 files changed, 194 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/45305434/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index e7faed4..139daeb 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,21 +16,10 @@
*/
package org.apache.camel.itest.osgi.core.log;
-import java.io.File;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
-import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
-import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
-import org.slf4j.LoggerFactory;
-
-import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -51,14 +40,6 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
- public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
- }
-
- @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -73,32 +54,5 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
return false;
}
- @Override
- protected CamelContext createCamelContext() throws Exception {
- CamelContext camelContext = super.createCamelContext();
- camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
- camelContext.setUseMDCLogging(true);
- return camelContext;
- }
-
- @Override
- protected JndiRegistry createRegistry() throws Exception {
- JndiRegistry registry = super.createRegistry();
- registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
- return registry;
- }
-
- @Configuration
- public static Option[] configure() throws Exception {
- Option[] options = combine(
- getDefaultCamelKarafOptions(),
- new Option[] {
- new DoNotModifyLogOption(),
- new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
-// KarafDistributionOption.debugConfiguration("9999", true)
- });
- return options;
- }
-
}
http://git-wip-us.apache.org/repos/asf/camel/blob/45305434/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
new file mode 100644
index 0000000..2a15d73
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
@@ -0,0 +1,98 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.not;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithLoggersPresentInRegistryTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger1", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger1", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger1", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToCamelCreatedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), not(equalTo(bundleContext.getBundle().getSymbolicName() + ".log")));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger1", LoggerFactory.getLogger("org.apache.camel.SIFT.l1"));
+ registry.put("mylogger2", LoggerFactory.getLogger("org.apache.camel.SIFT.l2"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/45305434/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
new file mode 100644
index 0000000..408b7d8
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
@@ -0,0 +1,96 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithNonDefaultLoggerTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToRegistryDefaultLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
[12/13] git commit: [CAMEL-6694] Added OSGi integration tests for
logging with MDC SIFT logger
Posted by da...@apache.org.
[CAMEL-6694] Added OSGi integration tests for logging with MDC SIFT logger
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b79265fe
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b79265fe
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b79265fe
Branch: refs/heads/camel-2.12.x
Commit: b79265fed1ebaf0dcb5b588bb1aa588905b9a205
Parents: f5f8a10
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 13:38:07 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:56 2014 +0200
----------------------------------------------------------------------
.../camel/itest/osgi/core/log/LogRouteTest.java | 46 ---------
...ogRouteWithLoggersPresentInRegistryTest.java | 98 ++++++++++++++++++++
.../log/LogRouteWithNonDefaultLoggerTest.java | 96 +++++++++++++++++++
3 files changed, 194 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/b79265fe/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
index e7faed4..139daeb 100644
--- a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteTest.java
@@ -16,21 +16,10 @@
*/
package org.apache.camel.itest.osgi.core.log;
-import java.io.File;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
-import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
-import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.Configuration;
import org.ops4j.pax.exam.junit.JUnit4TestRunner;
-import org.slf4j.LoggerFactory;
-
-import static org.ops4j.pax.exam.OptionUtils.*;
@RunWith(JUnit4TestRunner.class)
public class LogRouteTest extends OSGiIntegrationTestSupport {
@@ -51,14 +40,6 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
}
@Test
- public void testSendMessageToInfoLogWithSiftLogging() throws Exception {
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=debug&logger=#mylogger", "<level>DEBUG</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=info&logger=#mylogger", "<level>INFO</level>");
- template.sendBody("log:org.apache.camel.SIFT?level=error&logger=#mylogger", "<level>ERROR</level>");
- }
-
- @Test
public void testSendMessageToBadLevel() throws Exception {
try {
template.sendBody("log:org.apache.camel.TEST?level=noSuchLevel", "<level>noSuchLevel</level>");
@@ -73,32 +54,5 @@ public class LogRouteTest extends OSGiIntegrationTestSupport {
return false;
}
- @Override
- protected CamelContext createCamelContext() throws Exception {
- CamelContext camelContext = super.createCamelContext();
- camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
- camelContext.setUseMDCLogging(true);
- return camelContext;
- }
-
- @Override
- protected JndiRegistry createRegistry() throws Exception {
- JndiRegistry registry = super.createRegistry();
- registry.bind("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
- return registry;
- }
-
- @Configuration
- public static Option[] configure() throws Exception {
- Option[] options = combine(
- getDefaultCamelKarafOptions(),
- new Option[] {
- new DoNotModifyLogOption(),
- new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties")),
-// KarafDistributionOption.debugConfiguration("9999", true)
- });
- return options;
- }
-
}
http://git-wip-us.apache.org/repos/asf/camel/blob/b79265fe/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
new file mode 100644
index 0000000..2a15d73
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithLoggersPresentInRegistryTest.java
@@ -0,0 +1,98 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.not;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithLoggersPresentInRegistryTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger1", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger1", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger1", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToCamelCreatedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:org.apache.camel.SIFT.relevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), not(equalTo(bundleContext.getBundle().getSymbolicName() + ".log")));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger1", LoggerFactory.getLogger("org.apache.camel.SIFT.l1"));
+ registry.put("mylogger2", LoggerFactory.getLogger("org.apache.camel.SIFT.l2"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/b79265fe/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
----------------------------------------------------------------------
diff --git a/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
new file mode 100644
index 0000000..408b7d8
--- /dev/null
+++ b/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/core/log/LogRouteWithNonDefaultLoggerTest.java
@@ -0,0 +1,96 @@
+/**
+ * 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.itest.osgi.core.log;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.camel.itest.osgi.OSGiIntegrationTestSupport;
+import org.apache.camel.osgi.CamelContextFactory;
+import org.apache.karaf.tooling.exam.options.DoNotModifyLogOption;
+import org.apache.karaf.tooling.exam.options.KarafDistributionConfigurationFileReplacementOption;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.Configuration;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.ops4j.pax.exam.OptionUtils.combine;
+
+@RunWith(JUnit4TestRunner.class)
+public class LogRouteWithNonDefaultLoggerTest extends OSGiIntegrationTestSupport {
+
+ @Test
+ public void testSendMessageToProvidedLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info&logger=#mylogger", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug&logger=#mylogger", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error&logger=#mylogger", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Test
+ public void testSendMessageToRegistryDefaultLogggerWithSiftLogging() throws Exception {
+ template.sendBody("log:irrelevant.logger.name?level=info", "<level>INFO</level>");
+ template.sendBody("log:irrelevant.logger.name?level=debug", "<level>DEBUG</level>");
+ template.sendBody("log:irrelevant.logger.name?level=error", "<level>ERROR</level>");
+
+ File logDir = new File(System.getProperty("karaf.base"), "data/log");
+ File[] files = logDir.listFiles();
+ assertThat(files.length, equalTo(1));
+ assertThat(files[0].getName(), equalTo(bundleContext.getBundle().getSymbolicName() + ".log"));
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ LOG.info("Get the bundleContext is " + bundleContext);
+ LOG.info("Application installed as bundle id: " + bundleContext.getBundle().getBundleId());
+
+ setThreadContextClassLoader();
+
+ CamelContextFactory factory = new CamelContextFactory();
+ factory.setBundleContext(bundleContext);
+ SimpleRegistry registry = new SimpleRegistry();
+ registry.put("mylogger", LoggerFactory.getLogger("org.apache.camel.SIFT"));
+ factory.setRegistry(registry);
+ CamelContext camelContext = factory.createContext();
+ camelContext.setApplicationContextClassLoader(getClass().getClassLoader());
+ camelContext.setUseMDCLogging(true);
+ return camelContext;
+ }
+
+ @Configuration
+ public static Option[] configure() throws Exception {
+ return combine(
+ getDefaultCamelKarafOptions(),
+ new DoNotModifyLogOption(),
+ new KarafDistributionConfigurationFileReplacementOption("etc/org.ops4j.pax.logging.cfg", new File("src/test/resources/log4j.properties"))
+ );
+ }
+
+}
[11/13] git commit: [CAMEL-6694] lookup logger in registry when
single instance available
Posted by da...@apache.org.
[CAMEL-6694] lookup logger in registry when single instance available
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f5f8a10e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f5f8a10e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f5f8a10e
Branch: refs/heads/camel-2.12.x
Commit: f5f8a10e72c617add1a3ab3bb5c04fa00b679f20
Parents: 043449c
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 12:51:18 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:49 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 19 ++-
.../component/log/LogCustomLoggerTest.java | 147 +++++++++++++++++++
2 files changed, 163 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/f5f8a10e/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index b3dc3a7..5eebc25 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -22,13 +22,16 @@ import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.UriEndpointComponent;
import org.apache.camel.processor.CamelLogProcessor;
import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.util.CamelContextHelper;
import org.apache.camel.util.CamelLogger;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -37,22 +40,32 @@ import org.slf4j.Logger;
* @version
*/
public class LogComponent extends UriEndpointComponent {
+ private static final Logger LOG = LoggerFactory.getLogger(LogComponent.class);
private ExchangeFormatter exchangeFormatter;
public LogComponent() {
super(LogEndpoint.class);
}
-
+
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
Logger providedLogger = getLogger(parameters);
+ if (providedLogger == null) {
+ // try to look up the logger in registry
+ Map<String, Logger> availableLoggers = getCamelContext().getRegistry().findByTypeWithName(Logger.class);
+ if (availableLoggers.size() == 1) {
+ providedLogger = availableLoggers.values().iterator().next();
+ } else if (availableLoggers.size() > 1) {
+ LOG.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
+ }
+ }
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = null;
+ CamelLogger camelLogger = null;
if (providedLogger == null) {
camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
} else {
@@ -66,7 +79,7 @@ public class LogComponent extends UriEndpointComponent {
Long groupDelay = endpoint.getGroupDelay();
logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
- // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
+ // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/f5f8a10e/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
new file mode 100644
index 0000000..7114f53
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -0,0 +1,147 @@
+/**
+ * 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.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.log4j.*;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
+import java.io.StringWriter;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Custom Logger test.
+ */
+public class LogCustomLoggerTest extends ContextTestSupport {
+
+ // to capture the logs
+ private static StringWriter sw1;
+ // to capture the warnings from LogComponent
+ private static StringWriter sw2;
+
+ private static class CapturingAppender extends AppenderSkeleton {
+ private StringWriter sw;
+
+ private CapturingAppender(StringWriter sw) {
+ this.sw = sw;
+ }
+
+ @Override
+ protected void append(LoggingEvent event) {
+ this.sw.append(event.getLoggerName());
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+ }
+
+ @Before @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ sw1 = new StringWriter();
+ sw2 = new StringWriter();
+ Logger.getLogger(LogCustomLoggerTest.class).removeAllAppenders();
+ Logger.getLogger(LogCustomLoggerTest.class).addAppender(new CapturingAppender(sw1));
+ Logger.getLogger(LogCustomLoggerTest.class).setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger1.name").removeAllAppenders();
+ Logger.getLogger("provided.logger1.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger1.name").setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger2.name").removeAllAppenders();
+ Logger.getLogger("provided.logger2.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger2.name").setLevel(Level.TRACE);
+ Logger.getLogger("irrelevant.logger.name").removeAllAppenders();
+ Logger.getLogger("irrelevant.logger.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("irrelevant.logger.name").setLevel(Level.TRACE);
+ Logger.getLogger(LogComponent.class).removeAllAppenders();
+ Logger.getLogger(LogComponent.class).addAppender(new CapturingAppender(sw2));
+ Logger.getLogger(LogComponent.class).setLevel(Level.TRACE);
+ }
+
+ @Test
+ public void testFallbackLogger() throws Exception {
+ String endpointUri = "log:" + LogCustomLoggerTest.class.getCanonicalName();
+ template.requestBody(endpointUri, "hello");
+ assertThat(sw1.toString(), equalTo(LogCustomLoggerTest.class.getCanonicalName()));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedLogger() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger2.name"));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedNotResolvableLogger() {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ try {
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ } catch (ResolveEndpointFailedException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testDefaultRegistryLogger() throws Exception {
+ getRegistry().put("logger", LoggerFactory.getLogger("provided.logger1.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger1.name"));
+ }
+
+ @Test
+ public void testTwoRegistryLoggers() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("irrelevant.logger.name"));
+ assertThat(sw2.toString(), equalTo(LogComponent.class.getName()));
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ return new DefaultCamelContext(new SimpleRegistry());
+ }
+
+ private SimpleRegistry getRegistry() {
+ SimpleRegistry registry = null;
+ if (context.getRegistry() instanceof PropertyPlaceholderDelegateRegistry) {
+ registry = (SimpleRegistry) ((PropertyPlaceholderDelegateRegistry) context.getRegistry()).getRegistry();
+ } else {
+ fail("Could not determine Registry type");
+ }
+ return registry;
+ }
+
+}
[04/13] git commit: Merge branch 'CAMEL-6694' of
https://github.com/grgrzybek/camel
Posted by da...@apache.org.
Merge branch 'CAMEL-6694' of https://github.com/grgrzybek/camel
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/56468305
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/56468305
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/56468305
Branch: refs/heads/master
Commit: 56468305ef13cebb3719815002b36827169495bc
Parents: 5f6477c 4530543
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Apr 4 08:34:57 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:34:57 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 37 ++++-
.../component/log/LogCustomLoggerTest.java | 147 +++++++++++++++++++
.../camel/itest/osgi/core/log/LogRouteTest.java | 2 +-
...ogRouteWithLoggersPresentInRegistryTest.java | 98 +++++++++++++
.../log/LogRouteWithNonDefaultLoggerTest.java | 96 ++++++++++++
.../src/test/resources/log4j.properties | 13 ++
6 files changed, 389 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
[07/13] git commit: [CAMEL-6694] lookup logger in registry when
single instance available
Posted by da...@apache.org.
[CAMEL-6694] lookup logger in registry when single instance available
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/426fa8e3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/426fa8e3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/426fa8e3
Branch: refs/heads/camel-2.13.x
Commit: 426fa8e3a53fccc4671e9e3630157ce01bb9b544
Parents: fe8360f
Author: Grzegorz Grzybek <gr...@gmail.com>
Authored: Thu Apr 3 12:51:18 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Apr 4 08:39:03 2014 +0200
----------------------------------------------------------------------
.../camel/component/log/LogComponent.java | 19 ++-
.../component/log/LogCustomLoggerTest.java | 147 +++++++++++++++++++
2 files changed, 163 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/426fa8e3/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
index b3dc3a7..5eebc25 100644
--- a/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/log/LogComponent.java
@@ -22,13 +22,16 @@ import java.util.Map;
import org.apache.camel.Endpoint;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
+import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.impl.UriEndpointComponent;
import org.apache.camel.processor.CamelLogProcessor;
import org.apache.camel.processor.DefaultExchangeFormatter;
import org.apache.camel.processor.ThroughputLogger;
import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.util.CamelContextHelper;
import org.apache.camel.util.CamelLogger;
import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The <a href="http://camel.apache.org/log.html">Log Component</a>
@@ -37,22 +40,32 @@ import org.slf4j.Logger;
* @version
*/
public class LogComponent extends UriEndpointComponent {
+ private static final Logger LOG = LoggerFactory.getLogger(LogComponent.class);
private ExchangeFormatter exchangeFormatter;
public LogComponent() {
super(LogEndpoint.class);
}
-
+
protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
LoggingLevel level = getLoggingLevel(parameters);
Logger providedLogger = getLogger(parameters);
+ if (providedLogger == null) {
+ // try to look up the logger in registry
+ Map<String, Logger> availableLoggers = getCamelContext().getRegistry().findByTypeWithName(Logger.class);
+ if (availableLoggers.size() == 1) {
+ providedLogger = availableLoggers.values().iterator().next();
+ } else if (availableLoggers.size() > 1) {
+ LOG.info("More than one {} instance found in the registry. Falling back to creating logger from URI {}.", Logger.class.getName(), uri);
+ }
+ }
LogEndpoint endpoint = new LogEndpoint(uri, this);
endpoint.setLevel(level.name());
setProperties(endpoint, parameters);
- CamelLogger camelLogger = null;
+ CamelLogger camelLogger = null;
if (providedLogger == null) {
camelLogger = new CamelLogger(remaining, level, endpoint.getMarker());
} else {
@@ -66,7 +79,7 @@ public class LogComponent extends UriEndpointComponent {
Long groupDelay = endpoint.getGroupDelay();
logger = new ThroughputLogger(camelLogger, this.getCamelContext(), endpoint.getGroupInterval(), groupDelay, groupActiveOnly);
} else {
- // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
+ // first, try to use the user-specified formatter (or the one picked up from the Registry and transferred to
// the property by a previous endpoint initialisation); if null, try to pick it up from the Registry now
ExchangeFormatter localFormatter = exchangeFormatter;
if (localFormatter == null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/426fa8e3/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
new file mode 100644
index 0000000..7114f53
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/component/log/LogCustomLoggerTest.java
@@ -0,0 +1,147 @@
+/**
+ * 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.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.impl.PropertyPlaceholderDelegateRegistry;
+import org.apache.camel.impl.SimpleRegistry;
+import org.apache.log4j.*;
+import org.apache.log4j.spi.LoggingEvent;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.LoggerFactory;
+
+import java.io.StringWriter;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Custom Logger test.
+ */
+public class LogCustomLoggerTest extends ContextTestSupport {
+
+ // to capture the logs
+ private static StringWriter sw1;
+ // to capture the warnings from LogComponent
+ private static StringWriter sw2;
+
+ private static class CapturingAppender extends AppenderSkeleton {
+ private StringWriter sw;
+
+ private CapturingAppender(StringWriter sw) {
+ this.sw = sw;
+ }
+
+ @Override
+ protected void append(LoggingEvent event) {
+ this.sw.append(event.getLoggerName());
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public boolean requiresLayout() {
+ return false;
+ }
+ }
+
+ @Before @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ sw1 = new StringWriter();
+ sw2 = new StringWriter();
+ Logger.getLogger(LogCustomLoggerTest.class).removeAllAppenders();
+ Logger.getLogger(LogCustomLoggerTest.class).addAppender(new CapturingAppender(sw1));
+ Logger.getLogger(LogCustomLoggerTest.class).setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger1.name").removeAllAppenders();
+ Logger.getLogger("provided.logger1.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger1.name").setLevel(Level.TRACE);
+ Logger.getLogger("provided.logger2.name").removeAllAppenders();
+ Logger.getLogger("provided.logger2.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("provided.logger2.name").setLevel(Level.TRACE);
+ Logger.getLogger("irrelevant.logger.name").removeAllAppenders();
+ Logger.getLogger("irrelevant.logger.name").addAppender(new CapturingAppender(sw1));
+ Logger.getLogger("irrelevant.logger.name").setLevel(Level.TRACE);
+ Logger.getLogger(LogComponent.class).removeAllAppenders();
+ Logger.getLogger(LogComponent.class).addAppender(new CapturingAppender(sw2));
+ Logger.getLogger(LogComponent.class).setLevel(Level.TRACE);
+ }
+
+ @Test
+ public void testFallbackLogger() throws Exception {
+ String endpointUri = "log:" + LogCustomLoggerTest.class.getCanonicalName();
+ template.requestBody(endpointUri, "hello");
+ assertThat(sw1.toString(), equalTo(LogCustomLoggerTest.class.getCanonicalName()));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedLogger() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger2.name"));
+ }
+
+ @Test
+ public void testEndpointURIParametrizedNotResolvableLogger() {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ try {
+ template.requestBody("log:irrelevant.logger.name?logger=#logger2", "hello");
+ } catch (ResolveEndpointFailedException e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testDefaultRegistryLogger() throws Exception {
+ getRegistry().put("logger", LoggerFactory.getLogger("provided.logger1.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("provided.logger1.name"));
+ }
+
+ @Test
+ public void testTwoRegistryLoggers() throws Exception {
+ getRegistry().put("logger1", LoggerFactory.getLogger("provided.logger1.name"));
+ getRegistry().put("logger2", LoggerFactory.getLogger("provided.logger2.name"));
+ template.requestBody("log:irrelevant.logger.name", "hello");
+ assertThat(sw1.toString(), equalTo("irrelevant.logger.name"));
+ assertThat(sw2.toString(), equalTo(LogComponent.class.getName()));
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ return new DefaultCamelContext(new SimpleRegistry());
+ }
+
+ private SimpleRegistry getRegistry() {
+ SimpleRegistry registry = null;
+ if (context.getRegistry() instanceof PropertyPlaceholderDelegateRegistry) {
+ registry = (SimpleRegistry) ((PropertyPlaceholderDelegateRegistry) context.getRegistry()).getRegistry();
+ } else {
+ fail("Could not determine Registry type");
+ }
+ return registry;
+ }
+
+}