]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-rules: do not change maximum log level when running in test mode 36005/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 10 Jan 2025 21:07:55 +0000 (06:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 15 Jan 2025 02:50:22 +0000 (11:50 +0900)
When udev rules are being tested, log level specified by SYSTEMD_LOG_LEVEL=
environment variable should be honored, and should not be overridden by
the rules.

src/udev/udev-rules.c

index 4aacba6f0fb944b98d2dea35f520de027658ce20..3687748993a52612dff3e33bcd88aef54d335281 100644 (file)
@@ -2395,11 +2395,18 @@ static int udev_rule_apply_token_to_event(
                 if (level < 0)
                         level = event->default_log_level;
 
-                log_set_max_level(level);
+                if (event->event_mode == EVENT_UDEV_WORKER)
+                        log_set_max_level(level);
+                else {
+                        _cleanup_free_ char *level_str = NULL;
+                        (void) log_level_to_string_alloc(level, &level_str);
+                        log_event_debug(dev, token, "Running in test mode, skipping changing maximum log level to %s.", strna(level_str));
+                }
 
                 if (level == LOG_DEBUG && !event->log_level_was_debug) {
                         /* The log level becomes LOG_DEBUG at first time. Let's log basic information. */
-                        log_device_uevent(dev, "The log level is changed to 'debug' while processing device");
+                        if (event->event_mode == EVENT_UDEV_WORKER)
+                                log_device_uevent(dev, "The log level is changed to 'debug' while processing device");
                         event->log_level_was_debug = true;
                 }