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 2024/01/27 09:47:35 UTC

(camel) branch main updated: CAMEL-19956 camel-jbang: added support for custom logging configuration (#12917)

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 0db6adc5c28 CAMEL-19956 camel-jbang: added support for custom logging configuration (#12917)
0db6adc5c28 is described below

commit 0db6adc5c28ad3188585c03f5b4e96cc1c61944b
Author: Ivan Mashtak <de...@yandex.ru>
AuthorDate: Sat Jan 27 12:47:28 2024 +0300

    CAMEL-19956 camel-jbang: added support for custom logging configuration (#12917)
---
 .../org/apache/camel/dsl/jbang/core/commands/CamelCommand.java     | 2 +-
 .../apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java    | 4 ++--
 .../main/java/org/apache/camel/dsl/jbang/core/commands/Run.java    | 7 +++++--
 .../java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java   | 7 +++++--
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
index 527dc1e3ee9..ddbafad01f1 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
@@ -53,7 +53,7 @@ public abstract class CamelCommand implements Callable<Integer> {
     }
 
     protected void configureLoggingOff() {
-        RuntimeUtil.configureLog("off", false, false, false, false);
+        RuntimeUtil.configureLog("off", false, false, false, false, null);
     }
 
     protected boolean disarrangeLogging() {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index ca41d47d759..64d311773ee 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -218,9 +218,9 @@ abstract class ExportBaseCommand extends CamelCommand {
     public Integer doCall() throws Exception {
         // configure logging first
         if (logging) {
-            RuntimeUtil.configureLog(loggingLevel, false, false, false, true);
+            RuntimeUtil.configureLog(loggingLevel, false, false, false, true, null);
         } else {
-            RuntimeUtil.configureLog("off", false, false, false, true);
+            RuntimeUtil.configureLog("off", false, false, false, true, null);
         }
 
         if (!quiet) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index e340c8bfdd5..e8c3fc9d8ce 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -198,6 +198,9 @@ public class Run extends CamelCommand {
     @Option(names = { "--logging-json" }, description = "Use JSON logging (ECS Layout)")
     boolean loggingJson;
 
+    @Option(names = { "--logging-config-path" }, description = "Path to file with custom logging configuration")
+    String loggingConfigPath;
+
     @Option(names = { "--max-messages" }, defaultValue = "0", description = "Max number of messages to process before stopping")
     int maxMessages;
 
@@ -1209,7 +1212,7 @@ public class Run extends CamelCommand {
         if (silentRun) {
             // do not configure logging
         } else if (logging) {
-            RuntimeUtil.configureLog(loggingLevel, loggingColor, loggingJson, scriptRun, false);
+            RuntimeUtil.configureLog(loggingLevel, loggingColor, loggingJson, scriptRun, false, loggingConfigPath);
             writeSettings("loggingLevel", loggingLevel);
             writeSettings("loggingColor", loggingColor ? "true" : "false");
             writeSettings("loggingJson", loggingJson ? "true" : "false");
@@ -1220,7 +1223,7 @@ public class Run extends CamelCommand {
                 logFile.deleteOnExit();
             }
         } else {
-            RuntimeUtil.configureLog("off", false, false, false, false);
+            RuntimeUtil.configureLog("off", false, false, false, false, null);
             writeSettings("loggingLevel", "off");
         }
     }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java
index 834acfb682e..41b8371a405 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeUtil.java
@@ -21,6 +21,7 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
@@ -38,12 +39,14 @@ public final class RuntimeUtil {
     }
 
     public static void configureLog(
-            String level, boolean color, boolean json, boolean script, boolean export) {
+            String level, boolean color, boolean json, boolean script, boolean export, String loggingConfigPath) {
         if (INIT_DONE.compareAndSet(false, true)) {
             long pid = ProcessHandle.current().pid();
             System.setProperty("pid", Long.toString(pid));
 
-            if (export) {
+            if (loggingConfigPath != null) {
+                Configurator.initialize("CamelJBang", "file://" + Path.of(loggingConfigPath).toAbsolutePath());
+            } else if (export) {
                 Configurator.initialize("CamelJBang", "log4j2-export.properties");
             } else if (script) {
                 Configurator.initialize("CamelJBang", "log4j2-script.properties");