summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-08-11 20:08:08 +0200
committerLennart Poettering <lennart@poettering.net>2014-08-11 20:08:08 +0200
commitc1dc6153c9426d98ddbcd8b5077f397f18ff1da7 (patch)
tree6bb0a7586c9f8877666676128ba2ff087118b59f
parent79c1afc67f973eaece8f1b7016e016bb33c256a7 (diff)
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.
-rw-r--r--src/core/main.c3
-rw-r--r--src/core/manager.c8
-rw-r--r--src/shared/log.c13
-rw-r--r--src/shared/log.h2
4 files changed, 19 insertions, 7 deletions
diff --git a/src/core/main.c b/src/core/main.c
index d2104cb551..f33b78d375 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 32c056588a..445461b6b9 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 078ccdc35b..2bac998bcd 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 794af7be6a..9918381d39 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);