vlib: introduce vlib_get_elog_main()
[vpp.git] / src / vlib / cli.c
index e1db95d..3215a32 100644 (file)
@@ -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))
     {
@@ -558,8 +575,8 @@ vlib_cli_dispatch_sub_commands (vlib_main_t * vm,
                  {
                    u32 c;
                  } *ed;
-                 ed = ELOG_DATA (&vm->elog_main, e);
-                 ed->c = elog_string (&vm->elog_main, "%v", c->path);
+                 ed = ELOG_DATA (vlib_get_elog_main (), e);
+                 ed->c = elog_string (vlib_get_elog_main (), "%v", c->path);
                }
 
              if (!c->is_mp_safe)
@@ -590,17 +607,17 @@ vlib_cli_dispatch_sub_commands (vlib_main_t * vm,
                  {
                    u32 c, err;
                  } *ed;
-                 ed = ELOG_DATA (&vm->elog_main, e);
-                 ed->c = elog_string (&vm->elog_main, "%v", c->path);
+                 ed = ELOG_DATA (vlib_get_elog_main (), e);
+                 ed->c = elog_string (vlib_get_elog_main (), "%v", c->path);
                  if (c_error)
                    {
                      vec_add1 (c_error->what, 0);
-                     ed->err =
-                       elog_string (&vm->elog_main, (char *) c_error->what);
+                     ed->err = elog_string (vlib_get_elog_main (),
+                                            (char *) c_error->what);
                      _vec_len (c_error->what) -= 1;
                    }
                  else
-                   ed->err = elog_string (&vm->elog_main, "OK");
+                   ed->err = elog_string (vlib_get_elog_main (), "OK");
                }
 
              if (c_error)
@@ -1530,7 +1547,7 @@ event_logger_trace_command_fn (vlib_main_t * vm,
    */
   if (dispatch || circuit)
     {
-      elog_main_t *em = &vm->elog_main;
+      elog_main_t *em = &vlib_global_main.elog_main;
 
       em->n_total_events_disable_limit =
        em->n_total_events + vec_len (em->event_ring);
@@ -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;
 }