summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2021-02-17 10:25:18 -0500
committerFlorin Coras <florin.coras@gmail.com>2021-02-18 15:42:03 +0000
commit3d0e0d155de32eb215a7ca675dfca5a28f8837cc (patch)
tree9e3292061613203a4e21a955f90951ad689dab1e
parent8fb22fdade3633f1116c44b913934fcffe0d861b (diff)
vlib: add a "vpplog" debug CLI
To add arbitrary text to the vlib log. Combines nicely with comment/uncomment and the macro expander: define MY_FEATURE uncomment # or comment ... $(MY_FEATURE) { vpplog { My feature was enabled } } Type: improvement Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: Ia019f0a8fa670d8593ae01595f5ef410796e5b1c
-rw-r--r--src/vlib/cli.c20
-rw-r--r--src/vlib/cli.h5
2 files changed, 25 insertions, 0 deletions
diff --git a/src/vlib/cli.c b/src/vlib/cli.c
index e1db95d6af9..85ec6cbc43c 100644
--- a/src/vlib/cli.c
+++ b/src/vlib/cli.c
@@ -472,6 +472,23 @@ vlib_cli_dispatch_sub_commands (vlib_main_t * vm,
vec_free (string);
}
+ else if (unformat (input, "vpplog %v", &string))
+ {
+ int i;
+ /*
+ * Delete leading whitespace, so "vpplog { this and that }"
+ * and "vpplog this" line up nicely.
+ */
+ for (i = 0; i < vec_len (string); i++)
+ if (string[i] != ' ')
+ break;
+ if (i > 0)
+ vec_delete (string, i, 0);
+
+ vlib_log_notice (cm->log, "CLI: %v", string);
+ vec_free (string);
+ }
+
else if (unformat (input, "uncomment %U",
unformat_vlib_cli_sub_input, &sub_input))
{
@@ -1817,6 +1834,9 @@ vlib_cli_init (vlib_main_t * vm)
return error;
cmd = cmd->next_cli_command;
}
+
+ cm->log = vlib_log_register_class_rate_limit (
+ "cli", "log", 0x7FFFFFFF /* aka no rate limit */);
return error;
}
diff --git a/src/vlib/cli.h b/src/vlib/cli.h
index 0a8ef9d78d7..c31236f8ab9 100644
--- a/src/vlib/cli.h
+++ b/src/vlib/cli.h
@@ -41,6 +41,7 @@
#define included_vlib_cli_h
#include <vppinfra/format.h>
+#include <vlib/log.h>
struct vlib_cli_command_t;
@@ -152,6 +153,10 @@ typedef struct vlib_cli_main_t
(struct vlib_cli_main_t *, u32 id, int before_or_after);
void (**perf_counter_cbs_tmp)
(struct vlib_cli_main_t *, u32 id, int before_or_after);
+
+ /* cli log */
+ vlib_log_class_t log;
+
} vlib_cli_main_t;
#ifndef CLIB_MARCH_VARIANT