From: Lennart Poettering Date: Mon, 11 Aug 2014 18:08:08 +0000 (+0200) Subject: log: never ever log to syslog from PID 1, log to the journal again X-Git-Tag: v216~202 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=c1dc6153c9426d98ddbcd8b5077f397f18ff1da7 log: never ever log to syslog from PID 1, log to the journal again We don't support journal-less systems anyway, so let's avoid the confusion. --- diff --git a/src/core/main.c b/src/core/main.c index d2104cb55..f33b78d37 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1018,7 +1018,7 @@ static int help(void) { " --crash-shell[=0|1] Run shell on crash\n" " --confirm-spawn[=0|1] Ask for confirmation when spawning processes\n" " --show-status[=0|1] Show status updates on the console during bootup\n" - " --log-target=TARGET Set log target (console, journal, syslog, kmsg, journal-or-kmsg, syslog-or-kmsg, null)\n" + " --log-target=TARGET Set log target (console, journal, kmsg, journal-or-kmsg, null)\n" " --log-level=LEVEL Set log level (debug, info, notice, warning, err, crit, alert, emerg)\n" " --log-color[=0|1] Highlight important log messages\n" " --log-location[=0|1] Include code location in log messages\n" @@ -1328,6 +1328,7 @@ int main(int argc, char *argv[]) { saved_argc = argc; log_show_color(isatty(STDERR_FILENO) > 0); + log_set_upgrade_syslog_to_journal(true); /* Disable the umask logic */ if (getpid() == 1) diff --git a/src/core/manager.c b/src/core/manager.c index 32c056588..445461b6b 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -341,7 +341,7 @@ static int manager_setup_signals(Manager *m) { SIGRTMIN+26, /* systemd: set log target to journal-or-kmsg */ SIGRTMIN+27, /* systemd: set log target to console */ SIGRTMIN+28, /* systemd: set log target to kmsg */ - SIGRTMIN+29, /* systemd: set log target to syslog-or-kmsg */ + SIGRTMIN+29, /* systemd: set log target to syslog-or-kmsg (obsolete)*/ -1); assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0); @@ -1731,6 +1731,7 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t break; case 26: + case 29: /* compatibility: used to be mapped to LOG_TARGET_SYSLOG_OR_KMSG */ log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); log_notice("Setting log target to journal-or-kmsg."); break; @@ -1745,11 +1746,6 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t log_notice("Setting log target to kmsg."); break; - case 29: - log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); - log_notice("Setting log target to syslog-or-kmsg."); - break; - default: log_warning("Got unhandled signal <%s>.", signal_to_string(sfsi.ssi_signo)); } diff --git a/src/shared/log.c b/src/shared/log.c index 078ccdc35..2bac998bc 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -51,6 +51,8 @@ static bool syslog_is_stream = false; static bool show_color = false; static bool show_location = false; +static bool upgrade_syslog_to_journal = false; + /* Akin to glibc's __abort_msg; which is private and we hence cannot * use here. */ static char *log_abort_msg = NULL; @@ -267,6 +269,13 @@ void log_set_target(LogTarget target) { assert(target >= 0); assert(target < _LOG_TARGET_MAX); + if (upgrade_syslog_to_journal) { + if (target == LOG_TARGET_SYSLOG) + target = LOG_TARGET_JOURNAL; + else if (target == LOG_TARGET_SYSLOG_OR_KMSG) + target = LOG_TARGET_JOURNAL_OR_KMSG; + } + log_target = target; } @@ -984,3 +993,7 @@ void log_received_signal(int level, const struct signalfd_siginfo *si) { signal_to_string(si->ssi_signo)); } + +void log_set_upgrade_syslog_to_journal(bool b) { + upgrade_syslog_to_journal = b; +} diff --git a/src/shared/log.h b/src/shared/log.h index 794af7be6..9918381d3 100644 --- a/src/shared/log.h +++ b/src/shared/log.h @@ -172,3 +172,5 @@ LogTarget log_target_from_string(const char *s) _pure_; #define MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x) void log_received_signal(int level, const struct signalfd_siginfo *si); + +void log_set_upgrade_syslog_to_journal(bool b);