summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--src/journal/journald.c1
-rw-r--r--src/log.c9
-rw-r--r--src/log.h1
-rw-r--r--src/login/logind.c1
5 files changed, 11 insertions, 3 deletions
diff --git a/TODO b/TODO
index 6f7679f235..4f3b157040 100644
--- a/TODO
+++ b/TODO
@@ -30,8 +30,6 @@ Features:
* dbus upstream still refers to dbus.target and shouldn't
-* ensure that logind sets the syslog facility to AUTH when logging
-
* when a service has the same env var set twice we actually store it twice and return that in systemctl show -p... We should only show the last setting
* add man page documenting all kernel cmdline options, including stuff like fsck.mode=
diff --git a/src/journal/journald.c b/src/journal/journald.c
index f341b8742b..555d74f049 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -2765,6 +2765,7 @@ int main(int argc, char *argv[]) {
}
log_set_target(LOG_TARGET_CONSOLE);
+ log_set_facility(LOG_SYSLOG);
log_parse_environment();
log_open();
diff --git a/src/log.c b/src/log.c
index 5b1721184e..9fffc1dbc0 100644
--- a/src/log.c
+++ b/src/log.c
@@ -37,6 +37,7 @@
static LogTarget log_target = LOG_TARGET_CONSOLE;
static int log_max_level = LOG_INFO;
+static int log_facility = LOG_DAEMON;
static int console_fd = STDERR_FILENO;
static int syslog_fd = -1;
@@ -310,6 +311,10 @@ void log_set_max_level(int level) {
log_max_level = level;
}
+void log_set_facility(int facility) {
+ log_facility = facility;
+}
+
static int write_to_console(
int level,
const char*file,
@@ -457,11 +462,13 @@ static int write_to_journal(
snprintf(header, sizeof(header),
"PRIORITY=%i\n"
+ "SYSLOG_FACILITY=%i\n"
"CODE_FILE=%s\n"
"CODE_LINE=%i\n"
"CODE_FUNCTION=%s\n"
"MESSAGE=",
LOG_PRI(level),
+ LOG_FAC(level),
file,
line,
func);
@@ -497,7 +504,7 @@ static int log_dispatch(
/* Patch in LOG_DAEMON facility if necessary */
if ((level & LOG_FACMASK) == 0)
- level = LOG_DAEMON | LOG_PRI(level);
+ level = log_facility | LOG_PRI(level);
do {
char *e;
diff --git a/src/log.h b/src/log.h
index 5c6310ef14..3283808ff8 100644
--- a/src/log.h
+++ b/src/log.h
@@ -43,6 +43,7 @@ typedef enum LogTarget{
void log_set_target(LogTarget target);
void log_set_max_level(int level);
+void log_set_facility(int facility);
int log_set_target_from_string(const char *e);
int log_set_max_level_from_string(const char *e);
diff --git a/src/login/logind.c b/src/login/logind.c
index 777d91252a..a54195cebb 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -1240,6 +1240,7 @@ int main(int argc, char *argv[]) {
int r;
log_set_target(LOG_TARGET_AUTO);
+ log_set_facility(LOG_AUTH);
log_parse_environment();
log_open();