<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>