From 35edbc4048f420a974ff9fd5e1a34902950741f4 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 26 Jul 2021 18:16:00 +0200 Subject: [PATCH] debug: Support configuring different log levels for groups in default logger --- src/libstrongswan/utils/debug.c | 37 +++++++++++++++++++++++++-------- src/libstrongswan/utils/debug.h | 5 ++++- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/libstrongswan/utils/debug.c b/src/libstrongswan/utils/debug.c index a3a042be5..a5d478421 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 50ebbf50f..127da579a 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);