api: Implement log_dump/log_details
[vpp.git] / src / vlib / log.c
index 76490fc..578fc94 100644 (file)
 #include <vlib/log.h>
 #include <syslog.h>
 
-typedef struct
-{
-  vlib_log_level_t level;
-  vlib_log_class_t class;
-  f64 timestamp;
-  u8 *string;
-} vlib_log_entry_t;
-
-typedef struct
-{
-  u32 index;
-  u8 *name;
-  // level of log messages kept for this subclass
-  vlib_log_level_t level;
-  // level of log messages sent to syslog for this subclass
-  vlib_log_level_t syslog_level;
-  // flag saying whether this subclass is logged to syslog
-  f64 last_event_timestamp;
-  int last_sec_count;
-  int is_throttling;
-  int rate_limit;
-} vlib_log_subclass_data_t;
-
-typedef struct
-{
-  u32 index;
-  u8 *name;
-  vlib_log_subclass_data_t *subclasses;
-} vlib_log_class_data_t;
-
-typedef struct
-{
-  vlib_log_entry_t *entries;
-  vlib_log_class_data_t *classes;
-  int size, next, count;
-
-  /* our own log class */
-  vlib_log_class_t log_class;
-
-  int default_rate_limit;
-  int default_log_level;
-  int default_syslog_log_level;
-  int unthrottle_time;
-  u32 indent;
-
-  /* time zero */
-  struct timeval time_zero_timeval;
-  f64 time_zero;
-
-} vlib_log_main_t;
-
 vlib_log_main_t log_main = {
   .default_log_level = VLIB_LOG_LEVEL_NOTICE,
   .default_syslog_log_level = VLIB_LOG_LEVEL_WARNING,
@@ -77,7 +26,7 @@ vlib_log_main_t log_main = {
   .default_rate_limit = 50,
 };
 
-static int
+int
 last_log_entry ()
 {
   vlib_log_main_t *lm = &log_main;
@@ -232,6 +181,8 @@ vlib_log_register_class (char *class, char *subclass)
   vlib_log_class_data_t *tmp;
   vec_foreach (tmp, lm->classes)
   {
+    if (vec_len (tmp->name) != strlen (class))
+      continue;
     if (!memcmp (class, tmp->name, vec_len (tmp->name)))
       {
        c = tmp;
@@ -689,7 +640,7 @@ test_log_class_subclass (vlib_main_t * vm,
 /* *INDENT-OFF* */
 VLIB_CLI_COMMAND (cli_test_log, static) = {
   .path = "test log",
-  .short_help = "test log <class> <subclass> <level> <message",
+  .short_help = "test log <level> <class> <subclass> <message>",
   .function = test_log_class_subclass,
 };
 /* *INDENT-ON* */