<p>Neels Hofmeyr <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10888">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">logging vty: deprecate 'all', introduce 'force-all'<br><br>Add 'logging level force-all <level>' and 'no logging level force-all' as new<br>names for 'logging level all <level>' and 'logging level all everything'.<br><br>Resurrect the functionality of 'logging level all everything' -- even if it is<br>still deprecated because the name is confusing, it is now just an alias for<br>'no logging level force-all'.<br><br>Show in logging_vty_test.vty that we can now again lift the global logging<br>clamp, both with the new commands as well as with the deprecated ones.<br>Also show that 'force-all' is written back properly, if set.<br><br>Change-Id: I36f17c131cc70ce5a1aef62fd9693097de230cd4<br>---<br>M src/vty/logging_vty.c<br>M tests/logging/logging_vty_test.vty<br>2 files changed, 190 insertions(+), 33 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 c8e8520..3b1d8c6 100644</span><br><span>--- a/src/vty/logging_vty.c</span><br><span>+++ b/src/vty/logging_vty.c</span><br><span>@@ -43,9 +43,15 @@</span><br><span> #define LOG_STR "Configure logging sub-system\n"</span><br><span> #define LEVEL_STR "Set the log level for a specified category\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define CATEGORY_ALL_STR "Global setting for all subsystems\n"</span><br><span style="color: hsl(120, 100%, 40%);">+#define CATEGORY_ALL_STR "Deprecated alias for 'force-all'\n"</span><br><span style="color: hsl(120, 100%, 40%);">+#define FORCE_ALL_STR \</span><br><span style="color: hsl(120, 100%, 40%);">+       "Globally force all logging categories to a specific level. This is released by the" \</span><br><span style="color: hsl(120, 100%, 40%);">+      " 'no logging level force-all' command. Note: any 'logging level <category> <level>'" \</span><br><span style="color: hsl(120, 100%, 40%);">+ " commands will have no visible effect after this, until the forced level is released.\n"</span><br><span style="color: hsl(120, 100%, 40%);">+#define NO_FORCE_ALL_STR \</span><br><span style="color: hsl(120, 100%, 40%);">+       "Release any globally forced log level set with 'logging level force-all <level>'\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define LOG_LEVEL_ARGS "debug|info|notice|error|fatal"</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOG_LEVEL_ARGS "(debug|info|notice|error|fatal)"</span><br><span> #define LOG_LEVEL_STRS \</span><br><span>     "Log debug messages and higher levels\n" \</span><br><span>         "Log informational messages and higher levels\n" \</span><br><span>@@ -53,7 +59,7 @@</span><br><span>     "Log error messages and higher levels\n" \</span><br><span>         "Log only fatal messages\n"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define EVERYTHING_STR "Don't use. It doesn't log anything\n"</span><br><span style="color: hsl(120, 100%, 40%);">+#define EVERYTHING_STR "Deprecated alias for 'no logging level force-all'\n"</span><br><span> </span><br><span> /*! \file logging_vty.c</span><br><span>  *  Configuration of logging from VTY</span><br><span>@@ -307,11 +313,10 @@</span><br><span>     OSMO_ASSERT(cmd->string == NULL);</span><br><span>         OSMO_ASSERT(cmd->doc == NULL);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   osmo_talloc_asprintf(tall_log_ctx, cmd_str, "logging level (all|");</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_talloc_asprintf(tall_log_ctx, cmd_str, "logging level (");</span><br><span>    osmo_talloc_asprintf(tall_log_ctx, doc_str,</span><br><span>                       LOGGING_STR</span><br><span style="color: hsl(0, 100%, 40%);">-                             LEVEL_STR</span><br><span style="color: hsl(0, 100%, 40%);">-                       CATEGORY_ALL_STR);</span><br><span style="color: hsl(120, 100%, 40%);">+                            LEVEL_STR);</span><br><span>     add_category_strings(&cmd_str, &doc_str, osmo_log_info);</span><br><span>     osmo_talloc_asprintf(tall_log_ctx, cmd_str, ") %s", level_args);</span><br><span>   osmo_talloc_asprintf(tall_log_ctx, doc_str, "%s", level_strs);</span><br><span>@@ -320,7 +325,7 @@</span><br><span>       cmd->doc = doc_str;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* logging level (all|<categories>) (debug|...|fatal) */</span><br><span style="color: hsl(120, 100%, 40%);">+/* logging level (<categories>) (debug|...|fatal) */</span><br><span> DEFUN(logging_level,</span><br><span>       logging_level_cmd,</span><br><span>       NULL, /* cmdstr is dynamically set in logging_vty_add_cmds(). */</span><br><span>@@ -338,12 +343,6 @@</span><br><span>               return CMD_WARNING;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Check for special case where we want to set global log level */</span><br><span style="color: hsl(0, 100%, 40%);">-      if (!strcmp(argv[0], "all")) {</span><br><span style="color: hsl(0, 100%, 40%);">-                log_set_log_level(tgt, level);</span><br><span style="color: hsl(0, 100%, 40%);">-          return CMD_SUCCESS;</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    if (category < 0) {</span><br><span>               vty_out(vty, "Invalid category `%s'%s", argv[0], VTY_NEWLINE);</span><br><span>                 return CMD_WARNING;</span><br><span>@@ -355,7 +354,7 @@</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* logging level (all|<categories>) everything */</span><br><span style="color: hsl(120, 100%, 40%);">+/* logging level (<categories>) everything */</span><br><span> DEFUN_DEPRECATED(deprecated_logging_level_everything, deprecated_logging_level_everything_cmd,</span><br><span>            NULL, /* cmdstr is dynamically set in logging_vty_add_cmds(). */</span><br><span>             NULL) /* same thing for helpstr. */</span><br><span>@@ -364,6 +363,35 @@</span><br><span>  return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(logging_level_force_all, logging_level_force_all_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "logging level force-all " LOG_LEVEL_ARGS,</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGGING_STR LEVEL_STR FORCE_ALL_STR LOG_LEVEL_STRS)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct log_target *tgt = osmo_log_vty2tgt(vty);</span><br><span style="color: hsl(120, 100%, 40%);">+       int level = log_parse_level(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+ log_set_log_level(tgt, level);</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%);">+DEFUN(no_logging_level_force_all, no_logging_level_force_all_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+      "no logging level force-all",</span><br><span style="color: hsl(120, 100%, 40%);">+      NO_STR LOGGING_STR LEVEL_STR NO_FORCE_ALL_STR)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct log_target *tgt = osmo_log_vty2tgt(vty);</span><br><span style="color: hsl(120, 100%, 40%);">+       log_set_log_level(tgt, 0);</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%);">+/* 'logging level all (debug|...|fatal)' */</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(logging_level_force_all, deprecated_logging_level_all_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+             "logging level all " LOG_LEVEL_ARGS,</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGGING_STR LEVEL_STR CATEGORY_ALL_STR LOG_LEVEL_STRS);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* 'logging level all everything' */</span><br><span style="color: hsl(120, 100%, 40%);">+ALIAS_DEPRECATED(no_logging_level_force_all, deprecated_logging_level_all_everything_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+            "logging level all everything",</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGGING_STR LEVEL_STR CATEGORY_ALL_STR EVERYTHING_STR);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DEFUN(logging_set_category_mask,</span><br><span>       logging_set_category_mask_cmd,</span><br><span>       "logging set-log-mask MASK",</span><br><span>@@ -865,9 +893,10 @@</span><br><span>                const char *level_str = get_value_string_or_null(loglevel_strs, tgt->loglevel);</span><br><span>           level_str = osmo_str_tolower(level_str);</span><br><span>             if (!level_str)</span><br><span style="color: hsl(0, 100%, 40%);">-                 vty_out(vty, "%% Invalid log level %u for 'all'%s", tgt->loglevel, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                 vty_out(vty, "%% Invalid log level %u for 'force-all'%s",</span><br><span style="color: hsl(120, 100%, 40%);">+                           tgt->loglevel, VTY_NEWLINE);</span><br><span>              else</span><br><span style="color: hsl(0, 100%, 40%);">-                    vty_out(vty, "  logging level all %s%s", level_str, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                   vty_out(vty, "  logging level force-all %s%s", level_str, VTY_NEWLINE);</span><br><span>    }</span><br><span> </span><br><span>        for (i = 0; i < osmo_log_info->num_cat; i++) {</span><br><span>@@ -945,16 +974,20 @@</span><br><span>         install_element_ve(&logging_set_category_mask_cmd);</span><br><span>      install_element_ve(&logging_set_category_mask_old_cmd);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* logging level (all|<categories>) (debug|...|fatal) */</span><br><span style="color: hsl(120, 100%, 40%);">+        /* logging level (<categories>) (debug|...|fatal) */</span><br><span>   gen_logging_level_cmd_strs(&logging_level_cmd,</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "(" LOG_LEVEL_ARGS ")",</span><br><span style="color: hsl(120, 100%, 40%);">+                                   LOG_LEVEL_ARGS,</span><br><span>                              LOG_LEVEL_STRS);</span><br><span style="color: hsl(0, 100%, 40%);">-     /* logging level (all|<categories>) everything */</span><br><span style="color: hsl(120, 100%, 40%);">+       /* logging level (<categories>) everything */</span><br><span>  gen_logging_level_cmd_strs(&deprecated_logging_level_everything_cmd,</span><br><span>                                "everything", EVERYTHING_STR);</span><br><span> </span><br><span>      install_element_ve(&logging_level_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+   install_element_ve(&logging_level_force_all_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+ install_element_ve(&no_logging_level_force_all_cmd);</span><br><span>     install_element_ve(&deprecated_logging_level_everything_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+     install_element_ve(&deprecated_logging_level_all_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+    install_element_ve(&deprecated_logging_level_all_everything_cmd);</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>@@ -968,7 +1001,11 @@</span><br><span>        install_element(CFG_LOG_NODE, &logging_prnt_level_cmd);</span><br><span>  install_element(CFG_LOG_NODE, &logging_prnt_file_cmd);</span><br><span>   install_element(CFG_LOG_NODE, &logging_level_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+        install_element(CFG_LOG_NODE, &logging_level_force_all_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+      install_element(CFG_LOG_NODE, &no_logging_level_force_all_cmd);</span><br><span>  install_element(CFG_LOG_NODE, &deprecated_logging_level_everything_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+  install_element(CFG_LOG_NODE, &deprecated_logging_level_all_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+ install_element(CFG_LOG_NODE, &deprecated_logging_level_all_everything_cmd);</span><br><span> </span><br><span>         install_element(CONFIG_NODE, &cfg_log_stderr_cmd);</span><br><span>       install_element(CONFIG_NODE, &cfg_no_log_stderr_cmd);</span><br><span>diff --git a/tests/logging/logging_vty_test.vty b/tests/logging/logging_vty_test.vty</span><br><span>index a2c1e74..03b0c4a 100644</span><br><span>--- a/tests/logging/logging_vty_test.vty</span><br><span>+++ b/tests/logging/logging_vty_test.vty</span><br><span>@@ -12,6 +12,19 @@</span><br><span> ...</span><br><span> </span><br><span> logging_vty_test# configure terminal</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config)# log stderr</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config-log)# logging level force-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config-log)# show running-config</span><br><span style="color: hsl(120, 100%, 40%);">+... !logging level all</span><br><span style="color: hsl(120, 100%, 40%);">+  logging level force-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+... !logging level all</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config-log)# no logging level force-all</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config-log)# show running-config</span><br><span style="color: hsl(120, 100%, 40%);">+... !logging level force-all</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test(config-log)# exit</span><br><span> logging_vty_test(config)# no log stderr</span><br><span> logging_vty_test(config)# exit</span><br><span> </span><br><span>@@ -37,9 +50,10 @@</span><br><span>   logging print level (0|1)</span><br><span>   logging print file (0|1|basename) [last]</span><br><span>   logging set-log-mask MASK</span><br><span style="color: hsl(0, 100%, 40%);">-  logging level (all|aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf) (debug|info|notice|error|fatal)</span><br><span style="color: hsl(0, 100%, 40%);">-  show logging vty</span><br><span style="color: hsl(0, 100%, 40%);">-... !logging</span><br><span style="color: hsl(120, 100%, 40%);">+  logging level (aa|bb|ccc|dddd|eee|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf) (debug|info|notice|error|fatal)</span><br><span style="color: hsl(120, 100%, 40%);">+  logging level force-all (debug|info|notice|error|fatal)</span><br><span style="color: hsl(120, 100%, 40%);">+  no logging level force-all</span><br><span style="color: hsl(120, 100%, 40%);">+... !^  logging</span><br><span> </span><br><span> logging_vty_test# logging ?</span><br><span>   enable        Enables logging to this vty</span><br><span>@@ -52,14 +66,15 @@</span><br><span>   level         Set the log level for a specified category</span><br><span> </span><br><span> logging_vty_test# logging level ?</span><br><span style="color: hsl(0, 100%, 40%);">-  all      Global setting for all subsystems</span><br><span style="color: hsl(0, 100%, 40%);">-  aa       Antropomorphic Armadillos (AA)</span><br><span style="color: hsl(0, 100%, 40%);">-  bb       Bidirectional Breadspread (BB)</span><br><span style="color: hsl(0, 100%, 40%);">-  ccc      Chaos Communication Congress (CCC)</span><br><span style="color: hsl(0, 100%, 40%);">-  dddd     Dehydrated Dribbling Duck Dunkers (DDDD)</span><br><span style="color: hsl(0, 100%, 40%);">-  eee      Exhaustive Entropy Extraction (EEE)</span><br><span style="color: hsl(0, 100%, 40%);">-  lglobal  Library-internal global log family</span><br><span style="color: hsl(0, 100%, 40%);">-...</span><br><span style="color: hsl(120, 100%, 40%);">+... ! all</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%);">+... ! all</span><br><span style="color: hsl(120, 100%, 40%);">+  force-all  Globally force all logging categories to a specific level. This is released by the 'no logging level force-all' command. Note: any 'logging level <category> <level>' commands will have no visible effect after this, until the forced level is released.</span><br><span> </span><br><span> logging_vty_test# logging level aa ?</span><br><span>   debug   Log debug messages and higher levels</span><br><span>@@ -69,12 +84,18 @@</span><br><span>   fatal   Log only fatal messages</span><br><span> </span><br><span> logging_vty_test# logging level all ?</span><br><span style="color: hsl(120, 100%, 40%);">+% There is no matched command.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level force-all ?</span><br><span>   debug   Log debug messages and higher levels</span><br><span>   info    Log informational messages and higher levels</span><br><span>   notice  Log noticeable messages and higher levels</span><br><span>   error   Log error messages and higher levels</span><br><span>   fatal   Log only fatal messages</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# no logging level ?</span><br><span style="color: hsl(120, 100%, 40%);">+  force-all  Release any globally forced log level set with 'logging level force-all <level>'</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> logging_vty_test# log-sweep</span><br><span> DAA DEBUG Log message for DAA on level LOGL_DEBUG</span><br><span>@@ -93,6 +114,7 @@</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> </span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# ! The deprecated 'logging level all' still does what it did</span><br><span> logging_vty_test# logging level all fatal</span><br><span> logging_vty_test# log-sweep</span><br><span> DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span>@@ -175,12 +197,110 @@</span><br><span> DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span> DEEE FATAL Log message for DEEE on level LOGL_FATAL</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-logging_vty_test# ! Old 'logging level all everything' has no effect</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# ! Deprecated 'logging level all everything' lifts the globally forced level</span><br><span> logging_vty_test# logging level all everything</span><br><span style="color: hsl(0, 100%, 40%);">-% Ignoring deprecated logging level 'everything' keyword</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep eee</span><br><span style="color: hsl(120, 100%, 40%);">+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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# ! Now do the same dance with the new 'logging level force-all' commands</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level force-all fatal</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep</span><br><span style="color: hsl(120, 100%, 40%);">+DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DBB FATAL Log message for DBB on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC FATAL Log message for DCCC on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+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# logging level force-all error</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep</span><br><span style="color: hsl(120, 100%, 40%);">+DAA ERROR Log message for DAA on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DBB ERROR Log message for DBB on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DBB FATAL Log message for DBB on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC ERROR Log message for DCCC on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC FATAL Log message for DCCC on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD ERROR Log message for DDDDD on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+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# logging level force-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep</span><br><span style="color: hsl(120, 100%, 40%);">+DAA NOTICE Log message for DAA on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DAA ERROR Log message for DAA on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DBB NOTICE Log message for DBB on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DBB ERROR Log message for DBB on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DBB FATAL Log message for DBB on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC NOTICE Log message for DCCC on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC ERROR Log message for DCCC on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC FATAL Log message for DCCC on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD NOTICE Log message for DDDDD on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD ERROR Log message for DDDDD on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE NOTICE Log message for DEEE on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+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# logging level force-all debug</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep</span><br><span style="color: hsl(120, 100%, 40%);">+DAA DEBUG Log message for DAA on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DAA INFO Log message for DAA on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DAA NOTICE Log message for DAA on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DAA ERROR Log message for DAA on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DBB DEBUG Log message for DBB on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DBB INFO Log message for DBB on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DBB NOTICE Log message for DBB on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DBB ERROR Log message for DBB on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DBB FATAL Log message for DBB on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC DEBUG Log message for DCCC on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC INFO Log message for DCCC on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC NOTICE Log message for DCCC on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC ERROR Log message for DCCC on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC FATAL Log message for DCCC on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD DEBUG Log message for DDDDD on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD INFO Log message for DDDDD on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD NOTICE Log message for DDDDD on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD ERROR Log message for DDDDD on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE DEBUG Log message for DEEE on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE INFO Log message for DEEE on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE NOTICE Log message for DEEE on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+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# ! 'force-all' overrides everything, be it stronger or weaker</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level force-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level eee debug</span><br><span> logging_vty_test# log-sweep eee</span><br><span> DEEE NOTICE Log message for DEEE on level LOGL_NOTICE</span><br><span> DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span> DEEE FATAL Log message for DEEE on level LOGL_FATAL</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-logging_vty_test# ! There is currently no way to remove the 'logging level all' level!</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level force-all notice</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# logging level eee fatal</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep eee</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE NOTICE Log message for DEEE on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE ERROR Log message for DEEE on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+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# ! lift the globally forced level</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# no logging level force-all</span><br><span style="color: hsl(120, 100%, 40%);">+logging_vty_test# log-sweep</span><br><span style="color: hsl(120, 100%, 40%);">+DAA DEBUG Log message for DAA on level LOGL_DEBUG</span><br><span style="color: hsl(120, 100%, 40%);">+DAA INFO Log message for DAA on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DAA NOTICE Log message for DAA on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DAA ERROR Log message for DAA on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DAA FATAL Log message for DAA on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DBB INFO Log message for DBB on level LOGL_INFO</span><br><span style="color: hsl(120, 100%, 40%);">+DBB NOTICE Log message for DBB on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DBB ERROR Log message for DBB on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DBB FATAL Log message for DBB on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC NOTICE Log message for DCCC on level LOGL_NOTICE</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC ERROR Log message for DCCC on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DCCC FATAL Log message for DCCC on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD ERROR Log message for DDDDD on level LOGL_ERROR</span><br><span style="color: hsl(120, 100%, 40%);">+DDDDD FATAL Log message for DDDDD on level LOGL_FATAL</span><br><span style="color: hsl(120, 100%, 40%);">+DEEE FATAL Log message for DEEE on level LOGL_FATAL</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10888">change 10888</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/10888"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I36f17c131cc70ce5a1aef62fd9693097de230cd4 </div>
<div style="display:none"> Gerrit-Change-Number: 10888 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>