diff --git a/src/basic/log.c b/src/basic/log.c index 8a65aa349e4..ae0ac72b579 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -77,6 +77,7 @@ static bool show_location = false; static bool upgrade_syslog_to_journal = false; static bool always_reopen_console = false; static bool open_when_needed = false; +static bool prohibit_ipc = false; /* Akin to glibc's __abort_msg; which is private and we hence cannot * use here. */ @@ -254,7 +255,8 @@ int log_open(void) { getpid_cached() == 1 || isatty(STDERR_FILENO) <= 0) { - if (IN_SET(log_target, LOG_TARGET_AUTO, + if (!prohibit_ipc && + IN_SET(log_target, LOG_TARGET_AUTO, LOG_TARGET_JOURNAL_OR_KMSG, LOG_TARGET_JOURNAL)) { r = log_open_journal(); @@ -265,7 +267,8 @@ int log_open(void) { } } - if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, + if (!prohibit_ipc && + IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG, LOG_TARGET_SYSLOG)) { r = log_open_syslog(); if (r >= 0) { @@ -1332,6 +1335,10 @@ void log_set_open_when_needed(bool b) { open_when_needed = b; } +void log_set_prohibit_ipc(bool b) { + prohibit_ipc = b; +} + int log_emergency_level(void) { /* Returns the log level to use for log_emergency() logging. We use LOG_EMERG only when we are PID 1, as only * then the system of the whole system is obviously affected. */ diff --git a/src/basic/log.h b/src/basic/log.h index 910a89a2559..0a8fa228662 100644 --- a/src/basic/log.h +++ b/src/basic/log.h @@ -307,6 +307,10 @@ void log_set_upgrade_syslog_to_journal(bool b); void log_set_always_reopen_console(bool b); void log_set_open_when_needed(bool b); +/* If turned on, then we'll never use IPC-based logging, i.e. never log to syslog or the journal. We'll only log to + * stderr, the console or kmsg */ +void log_set_prohibit_ipc(bool b); + int log_syntax_internal( const char *unit, int level,