From: Stefan Metzmacher Date: Wed, 22 Nov 2023 16:03:30 +0000 (+0100) Subject: lib/util: add debug_set_forced_log_priority() X-Git-Tag: talloc-2.4.2~562 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bd21a0cdefb30ef5522f81d865c03d11a182a63c;p=thirdparty%2Fsamba.git lib/util: add debug_set_forced_log_priority() By default the priority for syslog/systemd is derived from the log level of the debug message. But for things like startup messages we want to change the priority temporary, like this: debug_set_forced_log_priority(DBGLVL_NOTICE); D_ERR("Startup...\n"); debug_set_forced_log_priority(-1); BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377 Signed-off-by: Stefan Metzmacher Reviewed-by: Björn Jacke Reviewed-by: Andrew Bartlett --- diff --git a/lib/util/debug.c b/lib/util/debug.c index 6872f2dfe46..f1f91ebe7a7 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -94,6 +94,7 @@ static struct { char hostname[HOST_NAME_MAX+1]; bool reopening_logs; bool schedule_reopen_logs; + int forced_log_priority; struct debug_settings settings; debug_callback_fn callback; @@ -230,6 +231,10 @@ static int debug_level_to_priority(int level) }; int priority; + if (state.forced_log_priority != -1) { + level = state.forced_log_priority; + } + if (level < 0 || (size_t)level >= ARRAY_SIZE(priority_map)) priority = LOG_DEBUG; else @@ -1133,6 +1138,11 @@ void debug_set_hostname(const char *name) strlcpy(state.hostname, name, sizeof(state.hostname)); } +void debug_set_forced_log_priority(int forced_log_priority) +{ + state.forced_log_priority = forced_log_priority; +} + /** * Ensure debug logs are initialised. * diff --git a/lib/util/debug.h b/lib/util/debug.h index 90230a2d88f..90adc122a1a 100644 --- a/lib/util/debug.h +++ b/lib/util/debug.h @@ -356,6 +356,7 @@ void debug_set_settings(struct debug_settings *settings, const char *logging_param, int syslog_level, bool syslog_only); void debug_set_hostname(const char *name); +void debug_set_forced_log_priority(int forced_log_priority); bool reopen_logs_internal( void ); void force_check_log_size( void ); bool need_to_check_log_size( void );