diff --git a/TODO b/TODO index 99e8f1c7230..80e6f1f6a77 100644 --- a/TODO +++ b/TODO @@ -129,9 +129,6 @@ Deprecations and removals: Features: -* our logging tools should look for $DEBUG_INVOCATION and consider equivalent - to $SYSTEMD_LOG_LEVEL=debug - * Teach systemd-ssh-generator to generated an /run/issue.d/ drop-in telling users how to connect to the system via the AF_VSOCK, as per: https://github.com/systemd/systemd/issues/35071#issuecomment-2462803142 diff --git a/src/basic/log.c b/src/basic/log.c index b99f37385ce..9f09b0cea5c 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -1406,14 +1406,29 @@ static bool should_parse_proc_cmdline(void) { void log_parse_environment_variables(void) { const char *e; + int r; e = getenv("SYSTEMD_LOG_TARGET"); if (e && log_set_target_from_string(e) < 0) log_warning("Failed to parse log target '%s', ignoring.", e); e = getenv("SYSTEMD_LOG_LEVEL"); - if (e && log_set_max_level_from_string(e) < 0) - log_warning("Failed to parse log level '%s', ignoring.", e); + if (e) { + r = log_set_max_level_from_string(e); + if (r < 0) + log_warning_errno(r, "Failed to parse log level '%s', ignoring: %m", e); + } else { + /* If no explicit log level is specified then let's see if this is a debug invocation, and if + * so raise the log level to debug too. Note that this is not symmetric: just because + * DEBUG_INVOCATION is explicitly set to 0 we won't lower the log level below debug. This + * follows the logic that debug logging is an opt-in thing anyway, and if there's any reason + * to enable it we should not disable it here automatically. */ + r = getenv_bool("DEBUG_INVOCATION"); + if (r < 0 && r != -ENXIO) + log_warning_errno(r, "Failed to parse $DEBUG_INVOCATION value, ignoring: %m"); + else if (r > 0) + log_set_max_level(LOG_DEBUG); + } e = getenv("SYSTEMD_LOG_COLOR"); if (e && log_show_color_from_string(e) < 0)