This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 5394d7db9ee camel-main - Show JVM uptime in start/shutdown log
5394d7db9ee is described below

commit 5394d7db9ee890035d2196d7742351685eec0a5f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Apr 29 09:27:21 2022 +0200

    camel-main - Show JVM uptime in start/shutdown log
---
 .../camel/impl/engine/AbstractCamelContext.java    | 44 ++++++++++++++++++++--
 .../src/main/java/org/apache/camel/main/Main.java  |  1 +
 .../java/org/apache/camel/main/KameletMain.java    |  2 +
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index bcde8435f54..0134deb1549 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -18,6 +18,7 @@ package org.apache.camel.impl.engine;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -357,6 +358,7 @@ public abstract class AbstractCamelContext extends 
BaseService
     private long startDate;
     private SSLContextParameters sslContextParameters;
     private StartupSummaryLevel startupSummaryLevel = 
StartupSummaryLevel.Default;
+    private boolean logJvmUptime;
 
     /**
      * Creates the {@link CamelContext} using {@link 
org.apache.camel.support.DefaultRegistry} as registry.
@@ -3183,9 +3185,17 @@ public abstract class AbstractCamelContext extends 
BaseService
             String start = TimeUtils.printDuration(taken);
             String init = TimeUtils.printDuration(initTaken);
             String built = TimeUtils.printDuration(buildTaken);
-            LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} 
start:{})", getVersion(), getName(), total, built,
-                    init,
-                    start);
+            String jvm = logJvmUptime ? getJvmUptime() : null;
+            if (jvm != null) {
+                LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} 
start:{} JVM-uptime:{})", getVersion(),
+                        getName(), total, built,
+                        init, start, jvm);
+            } else {
+                LOG.info("Apache Camel {} ({}) started in {} (build:{} init:{} 
start:{})", getVersion(), getName(), total,
+                        built,
+                        init,
+                        start);
+            }
         }
     }
 
@@ -3506,7 +3516,13 @@ public abstract class AbstractCamelContext extends 
BaseService
         if (startupSummaryLevel != StartupSummaryLevel.Off) {
             if (LOG.isInfoEnabled()) {
                 String taken = TimeUtils.printDuration(stopWatch.taken());
-                LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{})", 
getVersion(), getName(), taken, getUptime());
+                String jvm = logJvmUptime ? getJvmUptime() : null;
+                if (jvm != null) {
+                    LOG.info("Apache Camel {} ({}) shutdown in {} (uptime:{} 
JVM-uptime:{})", getVersion(), getName(), taken,
+                            getUptime(), jvm);
+                } else {
+                    LOG.info("Apache Camel {} ({}) shutdown in {} 
(uptime:{})", getVersion(), getName(), taken, getUptime());
+                }
             }
         }
 
@@ -4219,6 +4235,15 @@ public abstract class AbstractCamelContext extends 
BaseService
         }
     }
 
+    private static String getJvmUptime() {
+        try {
+            return 
TimeUtils.printDuration(ManagementFactory.getRuntimeMXBean().getUptime());
+        } catch (Exception e) {
+            // ignore
+        }
+        return null;
+    }
+
     @Override
     public InflightRepository getInflightRepository() {
         if (inflightRepository == null) {
@@ -5144,6 +5169,17 @@ public abstract class AbstractCamelContext extends 
BaseService
         this.beanProcessorFactory = doAddService(beanProcessorFactory);
     }
 
+    public boolean isLogJvmUptime() {
+        return logJvmUptime;
+    }
+
+    /**
+     * Whether to log the JVM uptime on startup and shutdown
+     */
+    public void setLogJvmUptime(boolean logJvmUptime) {
+        this.logJvmUptime = logJvmUptime;
+    }
+
     protected Map<String, RouteService> getRouteServices() {
         return routeServices;
     }
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/Main.java 
b/core/camel-main/src/main/java/org/apache/camel/main/Main.java
index e42779a3fbd..d0520ca7fe9 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/Main.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/Main.java
@@ -166,6 +166,7 @@ public class Main extends MainCommandLineSupport {
     protected CamelContext createCamelContext() {
         // do not build/init camel context yet
         DefaultCamelContext answer = new DefaultCamelContext(false);
+        answer.setLogJvmUptime(true); // we run in standalone mode so lets 
show JVM uptime
         answer.setRegistry(registry);
         return answer;
     }
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
index 341e0b460d2..94b1afe0c03 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java
@@ -28,6 +28,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
+import org.apache.camel.util.TimeUtils;
 
 /**
  * A Main class for booting up Camel with Kamelet in standalone mode.
@@ -170,6 +171,7 @@ public class KameletMain extends MainCommandLineSupport {
     protected CamelContext createCamelContext() {
         // do not build/init camel context yet
         DefaultCamelContext answer = new DefaultCamelContext(false);
+        answer.setLogJvmUptime(true);
 
         // register download listener
         if (downloadListener != null) {

Reply via email to