This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch standby in repository https://gitbox.apache.org/repos/asf/camel.git
commit 33f906f0ce53225bb89e4da230473fea9d48a2df Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Aug 31 09:27:29 2024 +0200 CAMEL-21150: camel-jbang - Make tracer in standby as default --- .../apache/camel/impl/console/TraceDevConsole.java | 77 +++++++++++++++++----- .../org/apache/camel/main/ProfileConfigurer.java | 12 ++-- .../camel/cli/connector/LocalCliConnector.java | 28 +++++++- 3 files changed, 94 insertions(+), 23 deletions(-) diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java index c5de210a50d..f34766bb255 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java @@ -42,6 +42,11 @@ public class TraceDevConsole extends AbstractDevConsole { */ public static final String ENABLED = "enabled"; + /** + * Whether to dump trace messages + */ + public static final String DUMP = "dump"; + private Queue<BacklogTracerEventMessage> queue; public TraceDevConsole() { @@ -67,17 +72,11 @@ public class TraceDevConsole extends AbstractDevConsole { protected String doCallText(Map<String, Object> options) { StringBuilder sb = new StringBuilder(); String enabled = (String) options.get(ENABLED); + String dump = (String) options.get(DUMP); BacklogTracer tracer = getCamelContext().getCamelContextExtension().getContextPlugin(BacklogTracer.class); if (tracer != null) { - if ("true".equals(enabled)) { - tracer.setEnabled(true); - sb.append("Enabled: ").append(tracer.isEnabled()).append("\n"); - } else if ("false".equals(enabled)) { - tracer.setEnabled(false); - sb.append("Enabled: ").append(tracer.isEnabled()).append("\n"); - } else { - sb.append("Enabled: ").append(tracer.isEnabled()).append("\n"); + if (dump != null) { for (BacklogTracerEventMessage t : tracer.dumpAllTracedMessages()) { addMessage(t); } @@ -85,6 +84,32 @@ public class TraceDevConsole extends AbstractDevConsole { String json = t.toJSon(0); sb.append(json).append("\n"); } + } else { + if ("true".equals(enabled)) { + tracer.setEnabled(true); + } else if ("false".equals(enabled)) { + tracer.setEnabled(false); + } + sb.append("Enabled: ").append(tracer.isEnabled()).append("\n"); + sb.append("Standby: ").append(tracer.isStandby()).append("\n"); + sb.append("Trace Counter: ").append(tracer.getTraceCounter()).append("\n"); + sb.append("Backlog Size: ").append(tracer.getBacklogSize()).append("\n"); + sb.append("Queue Size: ").append(tracer.getQueueSize()).append("\n"); + sb.append("Remove On Dump: ").append(tracer.isRemoveOnDump()).append("\n"); + if (tracer.getTraceFilter() != null) { + sb.append("Trace Filter: ").append(tracer.getTraceFilter()).append("\n"); + } + if (tracer.getTracePattern() != null) { + sb.append("Trace Pattern: ").append(tracer.getTracePattern()).append("\n"); + } + sb.append("Trace Rests: ").append(tracer.isTraceRests()).append("\n"); + sb.append("Trace Templates: ").append(tracer.isTraceTemplates()).append("\n"); + sb.append("Body Max Chars: ").append(tracer.getBodyMaxChars()).append("\n"); + sb.append("Body Include Files: ").append(tracer.isBodyIncludeFiles()).append("\n"); + sb.append("Body Include Streams: ").append(tracer.isBodyIncludeStreams()).append("\n"); + sb.append("Include Exchange Properties: ").append(tracer.isIncludeExchangeProperties()).append("\n"); + sb.append("Include Exchange Variables: ").append(tracer.isIncludeExchangeVariables()).append("\n"); + sb.append("Include Exception: ").append(tracer.isIncludeException()).append("\n"); } } @@ -105,20 +130,14 @@ public class TraceDevConsole extends AbstractDevConsole { protected JsonObject doCallJson(Map<String, Object> options) { JsonObject root = new JsonObject(); String enabled = (String) options.get(ENABLED); + String dump = (String) options.get(DUMP); BacklogTracer tracer = getCamelContext().getCamelContextExtension().getContextPlugin(BacklogTracer.class); if (tracer != null) { - if ("true".equals(enabled)) { - tracer.setEnabled(true); - root.put("enabled", tracer.isEnabled()); - } else if ("false".equals(enabled)) { - tracer.setEnabled(false); - root.put("enabled", tracer.isEnabled()); - } else { + if (dump != null) { for (BacklogTracerEventMessage t : tracer.dumpAllTracedMessages()) { addMessage(t); } - JsonArray arr = new JsonArray(); root.put("enabled", tracer.isEnabled()); root.put("traces", arr); @@ -126,6 +145,32 @@ public class TraceDevConsole extends AbstractDevConsole { JsonObject jo = (JsonObject) t.asJSon(); arr.add(jo); } + } else { + if ("true".equals(enabled)) { + tracer.setEnabled(true); + } else if ("false".equals(enabled)) { + tracer.setEnabled(false); + } + root.put("enabled", tracer.isEnabled()); + root.put("standby", tracer.isStandby()); + root.put("counter", tracer.getTraceCounter()); + root.put("backlogSize", tracer.getBacklogSize()); + root.put("queueSize", tracer.getQueueSize()); + root.put("removeOnDump", tracer.isRemoveOnDump()); + if (tracer.getTraceFilter() != null) { + root.put("traceFilter", tracer.getTraceFilter()); + } + if (tracer.getTracePattern() != null) { + root.put("tracePattern", tracer.getTracePattern()); + } + root.put("traceRests", tracer.isTraceRests()); + root.put("traceTemplates", tracer.isTraceTemplates()); + root.put("bodyMaxChars", tracer.getBodyMaxChars()); + root.put("bodyIncludeFiles", tracer.isBodyIncludeFiles()); + root.put("bodyIncludeStreams", tracer.isBodyIncludeStreams()); + root.put("includeExchangeProperties", tracer.isIncludeExchangeProperties()); + root.put("includeExchangeVariables", tracer.isIncludeExchangeVariables()); + root.put("includeException", tracer.isIncludeException()); } } diff --git a/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java index 3973098923e..0d5d5802274 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/ProfileConfigurer.java @@ -44,10 +44,14 @@ public class ProfileConfigurer { } if ("dev".equals(profile)) { - boolean standby = config.tracerConfig().isStandby(); - if (!standby) { - // make tracing enabled (if not configured to be standby) and limit to not capture too much data - config.tracerConfig().withEnabled(true); + // make tracing/debugger at least standby so we can use it in dev-mode + boolean enabled = config.tracerConfig().isEnabled(); + if (!enabled) { + config.tracerConfig().withStandby(true); + } + enabled = config.debuggerConfig().isEnabled(); + if (!enabled) { + config.debuggerConfig().withStandby(true); } } diff --git a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java index 1620d294c44..62cc3e8257f 100644 --- a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java +++ b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java @@ -274,6 +274,8 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C doActionBeanTask(root); } else if ("kafka".equals(action)) { doActionKafkaTask(); + } else if ("trace".equals(action)) { + doActionTraceTask(root); } } catch (Exception e) { // ignore @@ -733,6 +735,19 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C } } + private void doActionTraceTask(JsonObject root) throws IOException { + DevConsole dc = camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class) + .resolveById("trace"); + if (dc != null) { + String enabled = root.getString("enabled"); + JsonObject json = (JsonObject) dc.call(DevConsole.MediaType.JSON, Map.of("enabled", enabled)); + LOG.trace("Updating output file: {}", outputFile); + IOHelper.writeText(json.toJson(), outputFile); + } else { + IOHelper.writeText("{}", outputFile); + } + } + private void doActionBeanTask(JsonObject root) throws IOException { String filter = root.getStringOrDefault("filter", ""); String properties = root.getStringOrDefault("properties", "true"); @@ -977,13 +992,20 @@ public class LocalCliConnector extends ServiceSupport implements CliConnector, C root.put("fault-tolerance", json); } } - DevConsole dc12a = dcr.resolveById("circuit-breaker"); - if (dc12a != null) { - JsonObject json = (JsonObject) dc12a.call(DevConsole.MediaType.JSON); + DevConsole dc12 = dcr.resolveById("circuit-breaker"); + if (dc12 != null) { + JsonObject json = (JsonObject) dc12.call(DevConsole.MediaType.JSON); if (json != null && !json.isEmpty()) { root.put("circuit-breaker", json); } } + DevConsole dc13 = dcr.resolveById("trace"); + if (dc13 != null) { + JsonObject json = (JsonObject) dc13.call(DevConsole.MediaType.JSON); + if (json != null && !json.isEmpty()) { + root.put("trace", json); + } + } DevConsole dc14 = dcr.resolveById("consumer"); if (dc14 != null) { JsonObject json = (JsonObject) dc14.call(DevConsole.MediaType.JSON);