]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
lib/util: add debug_set_forced_log_priority()
authorStefan Metzmacher <metze@samba.org>
Wed, 22 Nov 2023 16:03:30 +0000 (17:03 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 24 Nov 2023 09:30:38 +0000 (09:30 +0000)
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 <metze@samba.org>
Reviewed-by: Björn Jacke <bjacke@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/util/debug.c
lib/util/debug.h

index 6872f2dfe4676be2fb83679aaf2c40cbb2157b42..f1f91ebe7a797f718c99154982bba0dbc4de7931 100644 (file)
@@ -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.
  *
index 90230a2d88f1e102be52e5dbee5064e3608d8f5d..90adc122a1a25fd7564d5034087dd57d318b9479 100644 (file)
@@ -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 );