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 bcb717496aa CAMEL-18538: camel-jbang - Log command bcb717496aa is described below commit bcb717496aa06cf814bd5f7d22765f7ac5a27606 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Jan 5 20:22:44 2023 +0100 CAMEL-18538: camel-jbang - Log command --- .../jbang/core/commands/action/CamelLogAction.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java index 3f26722aeb7..f350d0a1b16 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Queue; import java.util.concurrent.ArrayBlockingQueue; +import java.util.regex.Pattern; import org.apache.camel.catalog.impl.TimePatternConverter; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; @@ -60,6 +61,12 @@ public class CamelLogAction extends ActionBaseCommand { description = "Return logs newer than a relative duration like 5s, 2m, or 1h. The value is in seconds if no unit specified.") String since; + @CommandLine.Option(names = { "--find" }, + description = "Find and highlight matching text (ignore case).") + String find; + + String findAnsi; + private int nameMaxWidth; private final Map<String, Ansi.Color> colors = new HashMap<>(); @@ -101,6 +108,10 @@ public class CamelLogAction extends ActionBaseCommand { if (!rows.isEmpty()) { // read existing log files (skip by tail/since) + if (find != null) { + findAnsi = Ansi.ansi().fg(Ansi.Color.BLACK).bg(Ansi.Color.YELLOW).a("$0").reset().toString(); + find = Pattern.quote(find); + } Date limit = null; if (since != null) { long millis; @@ -207,7 +218,6 @@ public class CamelLogAction extends ActionBaseCommand { String n = String.format("%-" + nameMaxWidth + "s", name); AnsiConsole.out().print(Ansi.ansi().fg(color).a(n).a(": ").reset()); } - System.out.println(line); } else { line = unescapeAnsi(line); if (name != null) { @@ -215,8 +225,14 @@ public class CamelLogAction extends ActionBaseCommand { System.out.print(n); System.out.print(": "); } - System.out.println(line); } + if (find != null) { + String before = StringHelper.before(line, "---"); + String after = StringHelper.after(line, "---"); + after = after.replaceAll("(?i)" + find, findAnsi); + line = before + "---" + after; + } + System.out.println(line); } private static File logFile(String pid) {