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
commit d8b3e25f8fb207ea36f4c8e64070174771b533ce Author: Claus Ibsen <[email protected]> AuthorDate: Wed Jan 4 15:11:24 2023 +0100 CAMEL-18538: camel-jbang - Run logs to both console and file --- .../org/apache/camel/dsl/jbang/core/commands/Run.java | 14 ++++++++++++++ .../apache/camel/dsl/jbang/core/common/RuntimeUtil.java | 11 +++++++++++ .../camel-jbang-core/src/main/resources/log4j2.properties | 15 +++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) 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 dd59b5d4eb5..e36ef14c9ad 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 @@ -93,6 +93,8 @@ class Run extends CamelCommand { private boolean silentRun; private boolean pipeRun; + private File logFile; + //CHECKSTYLE:OFF @Parameters(description = "The Camel file(s) to run. If no files specified then application.properties is used as source for which files to run.", arity = "0..9", paramLabel = "<files>", parameterConsumer = FilesConsumer.class) @@ -560,6 +562,11 @@ class Run extends CamelCommand { main.start(); main.run(); + // cleanup and delete log file + if (logFile != null) { + FileUtil.deleteFile(logFile); + } + return main.getExitCode(); } @@ -701,6 +708,13 @@ class Run extends CamelCommand { writeSettings("loggingLevel", loggingLevel); writeSettings("loggingColor", loggingColor ? "true" : "false"); writeSettings("loggingJson", loggingJson ? "true" : "false"); + if (!pipeRun) { + // remember log file + File dir = new File(System.getProperty("user.home"), ".camel"); + String name = RuntimeUtil.getPid() + ".log"; + logFile = new File(dir, name); + logFile.deleteOnExit(); + } } else { RuntimeUtil.configureLog("off", false, false, false, false); 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 edd832c98f8..4dc5f495950 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 @@ -34,6 +34,9 @@ public final class RuntimeUtil { public static void configureLog(String level, boolean color, boolean json, boolean pipe, boolean export) { if (INIT_DONE.compareAndSet(false, true)) { + long pid = ProcessHandle.current().pid(); + System.setProperty("pid", "" + pid); + if (export) { Configurator.initialize("CamelJBang", "log4j2-export.properties"); } else if (pipe) { @@ -99,4 +102,12 @@ public final class RuntimeUtil { return deps; } + public static String getPid() { + try { + return "" + ProcessHandle.current().pid(); + } catch (Throwable e) { + return null; + } + } + } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/log4j2.properties b/dsl/camel-jbang/camel-jbang-core/src/main/resources/log4j2.properties index bd77ce59db0..e92faa54332 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/log4j2.properties +++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/log4j2.properties @@ -15,13 +15,24 @@ ## limitations under the License. ## --------------------------------------------------------------------------- +# console logger appender.stdout.type = Console appender.stdout.name = out appender.stdout.layout.type = PatternLayout - # logging style that is similar to spring boot appender.stdout.layout.pattern = %style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{Dim} %highlight{%5p} %style{%pid}{Magenta} %style{---}{Dim} %style{[%15.15t]}{Dim} %style{%-40.40c}{Cyan} : %m%n +# file logger +appender.file.type = File +appender.file.name = file +appender.file.fileName = ${sys:user.home}/.camel/${sys:pid}.log +appender.file.createOnDemand = true +appender.file.append = false +appender.file.layout.type = PatternLayout +# logging style that is similar to spring boot (no color) +appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %5p %pid --- [%15.15t] %-40.40c : %m%n + +# log to console and file +rootLogger = INFO,out,file rootLogger.level = INFO -rootLogger.appenderRef.out.ref = out
