This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 284f31ecd17e3a27cff07a3fdbee695b34de5d53 Author: Claus Ibsen <[email protected]> AuthorDate: Mon May 18 12:28:36 2020 +0200 CAMEL-15045: Allow to configure route startup logging level. For example if you have 100+ routes it may be annoying with a log per route. --- .../main/java/org/apache/camel/spi/RouteController.java | 13 +++++++++++++ .../camel/impl/engine/DefaultRouteController.java | 13 +++++++++++++ .../camel/impl/engine/InternalRouteController.java | 11 +++++++++++ .../camel/impl/engine/InternalRouteStartupManager.java | 13 ++++++++++--- .../camel/impl/lw/LightweightRuntimeCamelContext.java | 11 +++++++++++ .../camel/processor/RouteStartupLoggingLevelTest.java} | 17 ++++++++++------- .../management/mbean/ManagedRouteControllerMBean.java | 3 +++ .../camel/management/mbean/ManagedRouteController.java | 9 +++++++++ .../mbean/ManagedSupervisingRouteController.java | 9 +++++++++ 9 files changed, 89 insertions(+), 10 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java index 862b816..7333065 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteController.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import org.apache.camel.CamelContextAware; +import org.apache.camel.LoggingLevel; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; import org.apache.camel.StaticService; @@ -30,6 +31,18 @@ import org.apache.camel.StaticService; public interface RouteController extends CamelContextAware, StaticService { /** + * Gets the logging level used for logging route startup activity. + */ + LoggingLevel getRouteStartupLoggingLevel(); + + /** + * Sets the logging level used for logging route startup activity. + * By default INFO level is used. You can use this to change the level for example to OFF if + * this kind of logging is not wanted. + */ + void setRouteStartupLoggingLevel(LoggingLevel loggingLevel); + + /** * Enables supervising {@link RouteController}. */ SupervisingRouteController supervising(); diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java index 5eefe65..b783072 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java @@ -22,6 +22,7 @@ import java.util.concurrent.TimeUnit; import org.apache.camel.CamelContext; import org.apache.camel.ExtendedCamelContext; +import org.apache.camel.LoggingLevel; import org.apache.camel.NonManagedService; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; @@ -41,6 +42,8 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr private CamelContext camelContext; + private LoggingLevel routeStartupLoggingLevel = LoggingLevel.INFO; + public DefaultRouteController() { this(null); } @@ -63,6 +66,16 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr return camelContext; } + @Override + public LoggingLevel getRouteStartupLoggingLevel() { + return routeStartupLoggingLevel; + } + + @Override + public void setRouteStartupLoggingLevel(LoggingLevel routeStartupLoggingLevel) { + this.routeStartupLoggingLevel = routeStartupLoggingLevel; + } + // *************************************************** // Route management // *************************************************** diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java index f83d717..d14001f 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteController.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.concurrent.TimeUnit; import org.apache.camel.CamelContext; +import org.apache.camel.LoggingLevel; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; import org.apache.camel.spi.RouteController; @@ -37,6 +38,16 @@ class InternalRouteController implements RouteController { } @Override + public LoggingLevel getRouteStartupLoggingLevel() { + throw new UnsupportedOperationException(); + } + + @Override + public void setRouteStartupLoggingLevel(LoggingLevel loggingLevel) { + throw new UnsupportedOperationException(); + } + + @Override public SupervisingRouteController supervising() { throw new UnsupportedOperationException(); } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java index 1db7067..d8f272a 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/InternalRouteStartupManager.java @@ -27,12 +27,14 @@ import java.util.TreeMap; import org.apache.camel.Consumer; import org.apache.camel.Endpoint; import org.apache.camel.FailedToStartRouteException; +import org.apache.camel.LoggingLevel; import org.apache.camel.MultipleConsumersSupport; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; import org.apache.camel.StartupListener; import org.apache.camel.StatefulService; import org.apache.camel.SuspendableService; +import org.apache.camel.spi.CamelLogger; import org.apache.camel.spi.LifecycleStrategy; import org.apache.camel.spi.RouteStartupOrder; import org.apache.camel.support.OrderedComparator; @@ -53,6 +55,7 @@ class InternalRouteStartupManager { private final ThreadLocal<Route> setupRoute = new ThreadLocal<>(); private final AbstractCamelContext abstractCamelContext; + private final CamelLogger routeLogger = new CamelLogger(LOG); public InternalRouteStartupManager(AbstractCamelContext abstractCamelContext) { this.abstractCamelContext = abstractCamelContext; @@ -272,6 +275,10 @@ class InternalRouteStartupManager { doStartOrResumeRouteConsumers(inputs, false, addingRoutes); } + private LoggingLevel getRouteLoggerLogLevel() { + return abstractCamelContext.getRouteController().getRouteStartupLoggingLevel(); + } + private void doStartOrResumeRouteConsumers(Map<Integer, DefaultRouteStartupOrder> inputs, boolean resumeOnly, boolean addingRoute) throws Exception { List<Endpoint> routeInputs = new ArrayList<>(); @@ -284,7 +291,7 @@ class InternalRouteStartupManager { // to not be auto started boolean autoStartup = routeService.isAutoStartup(); if (addingRoute && !autoStartup) { - LOG.info("Skipping starting of route {} as it's configured with autoStartup=false", routeService.getId()); + routeLogger.log("Skipping starting of route " + routeService.getId() + " as it's configured with autoStartup=false", getRouteLoggerLogLevel()); continue; } @@ -331,7 +338,7 @@ class InternalRouteStartupManager { // use basic endpoint uri to not log verbose details or potential sensitive data String uri = endpoint.getEndpointBaseUri(); uri = URISupport.sanitizeUri(uri); - LOG.info("Route: {} resumed and consuming from: {}", route.getId(), uri); + routeLogger.log("Route: " + route.getId() + " resumed and consuming from: " + uri, getRouteLoggerLogLevel()); } else { // when starting we should invoke the lifecycle strategies for (LifecycleStrategy strategy : abstractCamelContext.getLifecycleStrategies()) { @@ -348,7 +355,7 @@ class InternalRouteStartupManager { // use basic endpoint uri to not log verbose details or potential sensitive data String uri = endpoint.getEndpointBaseUri(); uri = URISupport.sanitizeUri(uri); - LOG.info("Route: {} started and consuming from: {}", route.getId(), uri); + routeLogger.log("Route: " + route.getId() + " started and consuming from: " + uri, getRouteLoggerLogLevel()); } routeInputs.add(endpoint); diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java index aa54219..2001fc8 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java @@ -43,6 +43,7 @@ import org.apache.camel.ExtendedCamelContext; import org.apache.camel.FluentProducerTemplate; import org.apache.camel.GlobalEndpointConfiguration; import org.apache.camel.IsSingleton; +import org.apache.camel.LoggingLevel; import org.apache.camel.NoSuchEndpointException; import org.apache.camel.NoSuchLanguageException; import org.apache.camel.Processor; @@ -1750,6 +1751,16 @@ public class LightweightRuntimeCamelContext implements ExtendedCamelContext, Cat public RouteController getInternalRouteController() { return new RouteController() { @Override + public LoggingLevel getRouteStartupLoggingLevel() { + throw new UnsupportedOperationException(); + } + + @Override + public void setRouteStartupLoggingLevel(LoggingLevel loggingLevel) { + throw new UnsupportedOperationException(); + } + + @Override public SupervisingRouteController supervising() { throw new UnsupportedOperationException(); } diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java b/core/camel-core/src/test/java/org/apache/camel/processor/RouteStartupLoggingLevelTest.java similarity index 65% copy from core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java copy to core/camel-core/src/test/java/org/apache/camel/processor/RouteStartupLoggingLevelTest.java index 818765d..e5fd653 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java +++ b/core/camel-core/src/test/java/org/apache/camel/processor/RouteStartupLoggingLevelTest.java @@ -14,14 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.api.management.mbean; +package org.apache.camel.processor; -import java.util.Collection; +import org.apache.camel.CamelContext; +import org.apache.camel.LoggingLevel; -import org.apache.camel.api.management.ManagedAttribute; +public class RouteStartupLoggingLevelTest extends SimpleMockTest { -public interface ManagedRouteControllerMBean extends ManagedServiceMBean { - - @ManagedAttribute(description = "Controlled Routes") - Collection<String> getControlledRoutes(); + @Override + protected CamelContext createCamelContext() throws Exception { + CamelContext context = super.createCamelContext(); + context.getRouteController().setRouteStartupLoggingLevel(LoggingLevel.WARN); + return context; + } } diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java index 818765d..00246d3 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedRouteControllerMBean.java @@ -24,4 +24,7 @@ public interface ManagedRouteControllerMBean extends ManagedServiceMBean { @ManagedAttribute(description = "Controlled Routes") Collection<String> getControlledRoutes(); + + @ManagedAttribute(description = "Logging level used for logging route startup activity") + String getRouteStartupLoggingLevel(); } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java index f0c72f4..9e83661 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRouteController.java @@ -55,4 +55,13 @@ public class ManagedRouteController extends ManagedService implements ManagedRou return Collections.emptyList(); } + + @Override + public String getRouteStartupLoggingLevel() { + if (controller != null) { + return controller.getRouteStartupLoggingLevel().name(); + } else { + return null; + } + } } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java index b0bbfc2..2d79155 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSupervisingRouteController.java @@ -132,6 +132,15 @@ public class ManagedSupervisingRouteController extends ManagedService implements } @Override + public String getRouteStartupLoggingLevel() { + if (controller != null) { + return controller.getRouteStartupLoggingLevel().name(); + } else { + return null; + } + } + + @Override public Collection<String> getRestartingRoutes() { if (controller != null) { return controller.getRestartingRoutes().stream()
