From 98d794260222c287c187d38bc57f9f836e4923ab Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 22 Nov 2023 17:03:30 +0100 Subject: [PATCH] lib/util: add debug_set_forced_log_priority() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 (cherry picked from commit bd21a0cdefb30ef5522f81d865c03d11a182a63c) --- lib/util/debug.c | 10 ++++++++++ lib/util/debug.h | 1 + 2 files changed, 11 insertions(+) diff --git a/lib/util/debug.c b/lib/util/debug.c index 0e13fa564e3..a3266148b12 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 5433a585ec8..b62f2d19bcc 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 ); -- 2.11.4.GIT