diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vty/logging_vty.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c index b785be4c..243d6ebd 100644 --- a/src/vty/logging_vty.c +++ b/src/vty/logging_vty.c @@ -991,6 +991,44 @@ void logging_vty_add_deprecated_subsys(void *ctx, const char *name) install_element(CFG_LOG_NODE, cmd); } +/* logp (<categories>) (debug|...|fatal) .LOGMESSAGE*/ +DEFUN(vty_logp, + vty_logp_cmd, + NULL, /* cmdstr is dynamically set in gen_vty_logp_cmd_strs(). */ + NULL) /* same thing for helpstr. */ +{ + int category = log_parse_category(argv[0]); + int level = log_parse_level(argv[1]); + char *str = argv_concat(argv, argc, 2); + LOGP(category, level, "%s\n", str); + return CMD_SUCCESS; +} + +static void gen_vty_logp_cmd_strs(struct cmd_element *cmd) +{ + char *cmd_str = NULL; + char *doc_str = NULL; + + assert_loginfo(__func__); + + OSMO_ASSERT(cmd->string == NULL); + OSMO_ASSERT(cmd->doc == NULL); + + osmo_talloc_asprintf(tall_log_ctx, cmd_str, "logp ("); + osmo_talloc_asprintf(tall_log_ctx, doc_str, + "Print a message on all log outputs; useful for placing markers in test logs\n"); + add_category_strings(&cmd_str, &doc_str, osmo_log_info); + osmo_talloc_asprintf(tall_log_ctx, cmd_str, ") %s", LOG_LEVEL_ARGS); + osmo_talloc_asprintf(tall_log_ctx, doc_str, "%s", LOG_LEVEL_STRS); + + osmo_talloc_asprintf(tall_log_ctx, cmd_str, " .LOGMESSAGE"); + osmo_talloc_asprintf(tall_log_ctx, doc_str, + "Arbitrary message to log on given category and log level\n"); + + cmd->string = cmd_str; + cmd->doc = doc_str; +} + /*! Register logging related commands to the VTY. Call this once from * your application if you want to support those commands. */ void logging_vty_add_cmds() @@ -1026,6 +1064,9 @@ void logging_vty_add_cmds() install_element_ve(&show_logging_vty_cmd); install_element_ve(&show_alarms_cmd); + gen_vty_logp_cmd_strs(&vty_logp_cmd); + install_element_ve(&vty_logp_cmd); + install_node(&cfg_log_node, config_write_log); install_element(CFG_LOG_NODE, &logging_fltr_all_cmd); install_element(CFG_LOG_NODE, &logging_use_clr_cmd); |