From 3bdb6f693180ae6a64af158ddf23fb1335380e48 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sun, 8 Dec 2013 13:27:05 -0600 Subject: [PATCH] Ensure unit is journaled for short-lived or oneshot processes In the time it takes to process incoming log messages, the process we are logging details for may exit. This means the cgroup data is no longer available from '/proc'. Unfortunately, the way the code was structured before, we never log _SYSTEMD_UNIT if we don't have this cgroup information. Add an else if case that allows the passed in unit_id to be logged even if we couldn't capture cgroup information. This ensures a command like `journalctl -u run-XXX` will return all log messages from a oneshot process. --- src/journal/journald-server.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index a0a8e9c..1fcb3d5 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -626,6 +626,9 @@ static void dispatch_message_real( } free(c); + } else if (unit_id) { + x = strappenda("_SYSTEMD_UNIT=", unit_id); + IOVEC_SET_STRING(iovec[n++], x); } #ifdef HAVE_SELINUX