Claus Ibsen created CAMEL-25832:
-----------------------------------
Summary: camel-jbang - camel run with the quarkus, spring-boot or
main runtime keeps no log of the previous run
Key: CAMEL-25832
URL: https://issues.apache.org/jira/browse/CAMEL-25832
Project: Camel
Issue Type: Improvement
Components: camel-jbang
Reporter: Claus Ibsen
Fix For: 4.24.0
CAMEL-25784 keeps the log of a run that ended as
{{~/.camel/<name>-previous.log}}, with {{<name>-previous.json}} (pid, when it
ended, exit code, signal, failure). {{camel log <name> --previous}} prints it,
and the AI tools of the camel-jbang-mcp server read it when the app is gone.
This covers {{camel run}} with the default runtime (KameletMain).
The Maven runtimes keep no log of the previous run. Each of them handles the
log of a run in another way ({{Run.java}}):
* {{--runtime=quarkus}}: the exported project logs to {{~/.camel/<name>.log}}
({{quarkus.log.file.path}}). When camel run ends, the log is deleted (the
{{ChildProcess.stopOnExit}} callback in {{runQuarkus}}).
* {{--runtime=main}}: logs to {{~/.camel/<name>.log}}. The log is deleted when
the run starts ({{writeCamelMainRunLogConfig}}) and when it ends
({{runCamelMain}}).
* An existing Camel Main project: the log is deleted when the next run starts
({{writeCamelMainRunLogConfig}}), not when the run ends.
* An existing Quarkus project: the same ({{Files.deleteIfExists}} before the
Maven command).
* {{--runtime=spring-boot}}, exported or an existing project: logback logs to
{{~/.camel/<pid>.log}} ({{spring-boot-logback.xml}}), with the pid of the
Spring Boot JVM. camel run does not delete it. After CAMEL-25784, the next
camel run of the default runtime keeps it as the previous run only when the app
was killed and its status file is still there. Otherwise it deletes the log
after a day, or {{camel dirty --clean}} does.
So when an app on a Maven runtime fails at startup, {{camel log --previous}}
and the tools have nothing to read once camel run has ended, or once the app
runs again.
Proposal: keep the log as the previous run ({{PreviousRun.keep}}) where it is
deleted today:
* in the {{stopOnExit}} callbacks of the export runs (quarkus, main);
* when an existing project run starts and the log of the last run is still
there;
* for Spring Boot, log to {{<name>.log}} as the other runtimes do, so the log
can be kept the same way.
Notes:
* The exit code of {{mvn}} is not the exit code of the app: with quarkus:dev
and spring-boot:run, the app runs in a child process of Maven. The status file
of the app ({{<pid>-status.json}}) has the pid of the app.
* The name of the run is the {{appName}} that camel run uses for the log file
today.
Follow-up of CAMEL-25784.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)