<p>neels <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/14986">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
neels: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">add vty logp command to echo on all log targets<br><br>When reading SUT logs resulting from TTCN3 runs, it can be hard to figure out<br>which log section corresponds to which test code. Add a 'logp' command on VIEW<br>and ENABLE nodes that simply echos an arbitrary message on log output, useful<br>to set markers / explanations from the TTCN3 code, which then appear in all log<br>outputs and can make it trivial to figure out which log section is interesting.<br><br> logging_vty_test# logp lglobal notice This is the log message<br> DLGLOBAL NOTICE This is the log message<br><br>From TTCN3, could be used like this, e.g. in BSC_Tests.ttcn:<br><br> private function f_logp(charstring log_msg) runs on MSC_ConnHdlr<br> {<br> // log on TTCN3 log output<br> log(log_msg);<br> // log in stderr log<br> f_vty_transceive(BSCVTY, "logp lglobal notice " & log_msg);<br> }<br><br> ...<br><br> f_logp("f_probe_for_handover(" & log_label & "): Ending the test: Handover Failure stops the procedure.");<br><br>Change-Id: Ife5dc8999174c74e0d133729284fe526d6eaf8d9<br>---<br>M src/vty/logging_vty.c<br>M tests/logging/logging_vty_test.vty<br>2 files changed, 94 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c</span><br><span>index b785be4..243d6eb 100644</span><br><span>--- a/src/vty/logging_vty.c</span><br><span>+++ b/src/vty/logging_vty.c</span><br><span>@@ -991,6 +991,44 @@</span><br><span> install_element(CFG_LOG_NODE, cmd);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* logp (<categories>) (debug|...|fatal) .LOGMESSAGE*/</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(vty_logp,</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_logp_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+ NULL, /* cmdstr is dynamically set in gen_vty_logp_cmd_strs(). */</span><br><span style="color: hsl(120, 100%, 40%);">+ NULL) /* same thing for helpstr. */</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ int category = log_parse_category(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+ int level = log_parse_level(argv[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+ char *str = argv_concat(argv, argc, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGP(category, level, "%s\n", str);</span><br><span style="color: hsl(120, 100%, 40%);">+ return CMD_SUCCESS;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void gen_vty_logp_cmd_strs(struct cmd_element *cmd)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ char *cmd_str = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ char *doc_str = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ assert_loginfo(__func__);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(cmd->string == NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_ASSERT(cmd->doc == NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, cmd_str, "logp (");</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, doc_str,</span><br><span style="color: hsl(120, 100%, 40%);">+ "Print a message on all log outputs; useful for placing markers in test logs\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ add_category_strings(&cmd_str, &doc_str, osmo_log_info);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, cmd_str, ") %s", LOG_LEVEL_ARGS);</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, doc_str, "%s", LOG_LEVEL_STRS);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, cmd_str, " .LOGMESSAGE");</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, doc_str,</span><br><span style="color: hsl(120, 100%, 40%);">+ "Arbitrary message to log on given category and log level\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd->string = cmd_str;</span><br><span style="color: hsl(120, 100%, 40%);">+ cmd->doc = doc_str;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Register logging related commands to the VTY. Call this once from</span><br><span> * your application if you want to support those commands. */</span><br><span> void logging_vty_add_cmds()</span><br><span>@@ -1026,6 +1064,9 @@</span><br><span> install_element_ve(&show_logging_vty_cmd);</span><br><span> install_element_ve(&show_alarms_cmd);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ gen_vty_logp_cmd_strs(&vty_logp_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+ install_element_ve(&vty_logp_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> install_node(&cfg_log_node, config_write_log);</span><br><span> install_element(CFG_LOG_NODE, &logging_fltr_all_cmd);</span><br><span> install_element(CFG_LOG_NODE, &logging_use_clr_cmd);</span><br><span>diff --git a/tests/logging/logging_vty_test.vty b/tests/logging/logging_vty_test.vty</span><br><span>index 895d2bc..d77f8ce 100644</span><br><span>--- a/tests/logging/logging_vty_test.vty</span><br><span>+++ b/tests/logging/logging_vty_test.vty</span><br><span>@@ -468,3 +468,56 @@</span><br><span> DDDDD ERROR Log message for DDDDD on level LOGL_ERROR</span><br><span> DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span> DEEE FATAL Log message for DEEE on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# list</span><br><span style="color: hsl(120, 100%, 40%);">+...</span><br><span style="color: hsl(120, 100%, 40%);">+ logp (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal) .LOGMESSAGE</span><br><span style="color: hsl(120, 100%, 40%);">+...</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp?</span><br><span style="color: hsl(120, 100%, 40%);">+ logp Print a message on all log outputs; useful for placing markers in test logs</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp ?</span><br><span style="color: hsl(120, 100%, 40%);">+ aa Antropomorphic Armadillos (AA)</span><br><span style="color: hsl(120, 100%, 40%);">+ bb Bidirectional Breadspread (BB)</span><br><span style="color: hsl(120, 100%, 40%);">+ ccc Chaos Communication Congress (CCC)</span><br><span style="color: hsl(120, 100%, 40%);">+ dddd Dehydrated Dribbling Duck Dunkers (DDDD)</span><br><span style="color: hsl(120, 100%, 40%);">+ eee Exhaustive Entropy Extraction (EEE)</span><br><span style="color: hsl(120, 100%, 40%);">+ lglobal Library-internal global log family</span><br><span style="color: hsl(120, 100%, 40%);">+ llapd LAPD in libosmogsm</span><br><span style="color: hsl(120, 100%, 40%);">+ linp A-bis Intput Subsystem</span><br><span style="color: hsl(120, 100%, 40%);">+ lmux A-bis B-Subchannel TRAU Frame Multiplex</span><br><span style="color: hsl(120, 100%, 40%);">+ lmi A-bis Input Driver for Signalling</span><br><span style="color: hsl(120, 100%, 40%);">+ lmib A-bis Input Driver for B-Channels (voice)</span><br><span style="color: hsl(120, 100%, 40%);">+ lsms Layer3 Short Message Service (SMS)</span><br><span style="color: hsl(120, 100%, 40%);">+ lctrl Control Interface</span><br><span style="color: hsl(120, 100%, 40%);">+ lgtp GPRS GTP library</span><br><span style="color: hsl(120, 100%, 40%);">+ lstats Statistics messages and logging</span><br><span style="color: hsl(120, 100%, 40%);">+ lgsup Generic Subscriber Update Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ loap Osmocom Authentication Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ lss7 libosmo-sigtran Signalling System 7</span><br><span style="color: hsl(120, 100%, 40%);">+ lsccp libosmo-sigtran SCCP Implementation</span><br><span style="color: hsl(120, 100%, 40%);">+ lsua libosmo-sigtran SCCP User Adaptation</span><br><span style="color: hsl(120, 100%, 40%);">+ lm3ua libosmo-sigtran MTP3 User Adaptation</span><br><span style="color: hsl(120, 100%, 40%);">+ lmgcp libosmo-mgcp Media Gateway Control Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+ ljibuf libosmo-netif Jitter Buffer</span><br><span style="color: hsl(120, 100%, 40%);">+ lrspro Remote SIM protocol</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp lglobal ?</span><br><span style="color: hsl(120, 100%, 40%);">+ debug Log debug messages and higher levels</span><br><span style="color: hsl(120, 100%, 40%);">+ info Log informational messages and higher levels</span><br><span style="color: hsl(120, 100%, 40%);">+ notice Log noticeable messages and higher levels</span><br><span style="color: hsl(120, 100%, 40%);">+ error Log error messages and higher levels</span><br><span style="color: hsl(120, 100%, 40%);">+ fatal Log only fatal messages</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp lglobal info ?</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGMESSAGE Arbitrary message to log on given category and log level</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level set-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp aa error This is the log message</span><br><span style="color: hsl(120, 100%, 40%);">+DAA ERROR This is the log message</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp lglobal debug This log message is not echoed</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logp lglobal notice This log message is echoed</span><br><span style="color: hsl(120, 100%, 40%);">+DLGLOBAL NOTICE This log message is echoed</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/14986">change 14986</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/14986"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ife5dc8999174c74e0d133729284fe526d6eaf8d9 </div>
<div style="display:none"> Gerrit-Change-Number: 14986 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>