]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
debug: Support configuring different log levels for groups in default logger
authorTobias Brunner <tobias@strongswan.org>
Mon, 26 Jul 2021 16:16:00 +0000 (18:16 +0200)
committerTobias Brunner <tobias@strongswan.org>
Wed, 29 Jun 2022 08:28:50 +0000 (10:28 +0200)
src/libstrongswan/utils/debug.c
src/libstrongswan/utils/debug.h

index a3a042be5241ba62af34c64069c8eeb5010bf6ea..a5d478421e83c5218556d6f6568dbb712bad68fc 100644 (file)
@@ -63,9 +63,10 @@ ENUM(debug_lower_names, DBG_DMN, DBG_ANY,
 );
 
 /**
- * level logged by the default logger
+ * level logged by the default logger for specific groups, to simplify things
+ * we store level-1, so initialization to 0 is like setting it to 1
  */
-static level_t default_level = 1;
+static level_t default_level[DBG_MAX];
 
 /**
  * stream logged to by the default logger
@@ -81,7 +82,8 @@ void dbg_default(debug_t group, level_t level, char *fmt, ...)
        {
                default_stream = stderr;
        }
-       if (level <= default_level)
+       /* levels are stored as level-1 */
+       if (level <= default_level[group]+1)
        {
                va_list args;
 
@@ -92,16 +94,34 @@ void dbg_default(debug_t group, level_t level, char *fmt, ...)
        }
 }
 
-/**
- * set the level logged by the default stderr logger
+/*
+ * Described in header
+ */
+void dbg_default_set_level_group(debug_t group, level_t level)
+{
+       if (group < DBG_ANY)
+       {
+               default_level[group] = level-1;
+       }
+       else
+       {
+               for (group = 0; group < DBG_MAX; group++)
+               {
+                       default_level[group] = level-1;
+               }
+       }
+}
+
+/*
+ * Described in header
  */
 void dbg_default_set_level(level_t level)
 {
-       default_level = level;
+       dbg_default_set_level_group(DBG_ANY, level);
 }
 
-/**
- * set the stream logged by dbg_default() to
+/*
+ * Described in header
  */
 void dbg_default_set_stream(FILE *stream)
 {
@@ -112,4 +132,3 @@ void dbg_default_set_stream(FILE *stream)
  * The registered debug hook.
  */
 void (*dbg) (debug_t group, level_t level, char *fmt, ...) = dbg_default;
-
index 50ebbf50fc71332ac0820f9a10cd0c458603170a..127da579a13c3b19afb0053f8d9365179e1e1074 100644 (file)
@@ -146,9 +146,12 @@ extern void (*dbg) (debug_t group, level_t level, char *fmt, ...);
 /** default logging function */
 void dbg_default(debug_t group, level_t level, char *fmt, ...);
 
-/** set the level logged by dbg_default() */
+/** set the level logged by dbg_default() for all groups */
 void dbg_default_set_level(level_t level);
 
+/** set the level logged by dbg_default() for a specific group */
+void dbg_default_set_level_group(debug_t group, level_t level);
+
 /** set the stream logged by dbg_default() to */
 void dbg_default_set_stream(FILE *stream);