From: Tobias Brunner Date: Mon, 26 Jul 2021 16:16:00 +0000 (+0200) Subject: debug: Support configuring different log levels for groups in default logger X-Git-Tag: 5.9.7dr2~1^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35edbc4048f420a974ff9fd5e1a34902950741f4;p=thirdparty%2Fstrongswan.git debug: Support configuring different log levels for groups in default logger --- diff --git a/src/libstrongswan/utils/debug.c b/src/libstrongswan/utils/debug.c index a3a042be52..a5d478421e 100644 --- a/src/libstrongswan/utils/debug.c +++ b/src/libstrongswan/utils/debug.c @@ -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; - diff --git a/src/libstrongswan/utils/debug.h b/src/libstrongswan/utils/debug.h index 50ebbf50fc..127da579a1 100644 --- a/src/libstrongswan/utils/debug.h +++ b/src/libstrongswan/utils/debug.h @@ -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);