summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-10-12 05:28:39 +0200
committerLennart Poettering <lennart@poettering.net>2011-10-12 05:28:39 +0200
commit69e5d42db09dfb638bc74055c33bb2645f81563d (patch)
tree7aff917cac141a95d31ab95f71da034c2f776ca9
parented49ef3f349bcd4f0483ba8254a2537fe8e9cd17 (diff)
journal: add cgroup path to entries
-rw-r--r--Makefile.am3
-rw-r--r--src/journal/journald.c16
2 files changed, 16 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index b26c613d4f..e08785a8a3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -983,7 +983,8 @@ systemd_journald_SOURCES = \
src/journal/journal-file.c \
src/journal/lookup3.c \
src/sd-id128.c \
- src/acl-util.c
+ src/acl-util.c \
+ src/cgroup-util.c
systemd_journald_CFLAGS = \
$(AM_CFLAGS) \
diff --git a/src/journal/journald.c b/src/journal/journald.c
index d6db9b1c55..b8a9fc3adf 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -33,6 +33,7 @@
#include "sd-daemon.h"
#include "socket-util.h"
#include "acl-util.h"
+#include "cgroup-util.h"
typedef struct Server {
int syslog_fd;
@@ -134,8 +135,8 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
*comm = NULL, *cmdline = NULL, *hostname = NULL,
*audit_session = NULL, *audit_loginuid = NULL,
*syslog_priority = NULL, *syslog_facility = NULL,
- *exe = NULL;
- struct iovec iovec[15];
+ *exe = NULL, *cgroup = NULL;
+ struct iovec iovec[16];
unsigned n = 0;
char idbuf[33];
sd_id128_t id;
@@ -160,6 +161,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
if (ucred) {
uint32_t session;
+ char *path;
if (asprintf(&pid, "PID=%lu", (unsigned long) ucred->pid) >= 0)
IOVEC_SET_STRING(iovec[n++], pid);
@@ -203,6 +205,14 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
if (r >= 0)
if (asprintf(&audit_loginuid, "AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0)
IOVEC_SET_STRING(iovec[n++], audit_loginuid);
+
+ r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, ucred->pid, &path);
+ if (r >= 0) {
+ cgroup = strappend("SYSTEMD_CGROUP=", path);
+ if (cgroup)
+ IOVEC_SET_STRING(iovec[n++], cgroup);
+ free(path);
+ }
}
if (tv) {
@@ -247,6 +257,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
free(uid);
free(gid);
free(comm);
+ free(exe);
free(cmdline);
free(source_time);
free(boot_id);
@@ -256,6 +267,7 @@ static void process_message(Server *s, const char *buf, struct ucred *ucred, str
free(audit_loginuid);
free(syslog_facility);
free(syslog_priority);
+ free(cgroup);
}
static int process_event(Server *s, struct epoll_event *ev) {