diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-08-25 00:55:22 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-09-03 18:59:05 -0700 |
commit | 1946b0bd55b356ea25bd747cb338a4b31fabeecf (patch) | |
tree | 941da92a2a02c54f1caee39825cf0198695fa89d /src/shared/logs-show.c | |
parent | 268ba0ef6095df82966e1f1eda671e43ab1b31ab (diff) |
journalctl: include logs from PID 1 about services in systemctl status
Diffstat (limited to 'src/shared/logs-show.c')
-rw-r--r-- | src/shared/logs-show.c | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 60eb896ade..99407c9c1d 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -577,7 +577,7 @@ int show_journal_by_unit( unsigned how_many, OutputFlags flags) { - char *m = NULL; + char *m1 = NULL, *m2 = NULL, *m3 = NULL; sd_journal *j = NULL; int r; unsigned line = 0; @@ -597,7 +597,9 @@ int show_journal_by_unit( if (how_many <= 0) return 0; - if (asprintf(&m, "_SYSTEMD_UNIT=%s", unit) < 0) { + if (asprintf(&m1, "_SYSTEMD_UNIT=%s", unit) < 0 || + asprintf(&m2, "COREDUMP_UNIT=%s", unit) < 0 || + asprintf(&m3, "UNIT=%s", unit) < 0) { r = -ENOMEM; goto finish; } @@ -606,10 +608,34 @@ int show_journal_by_unit( if (r < 0) goto finish; - r = sd_journal_add_match(j, m, strlen(m)); + /* Look for messages from the service itself */ + r = sd_journal_add_match(j, m1, 0); if (r < 0) goto finish; + /* Look for coredumps of the service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m2, 0); + if (r < 0) + goto finish; + + /* Look for messages from PID 1 about this service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, "_PID=1", 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m3, 0); + if (r < 0) + goto finish; + + /* Seek to end */ r = sd_journal_seek_tail(j); if (r < 0) goto finish; @@ -692,8 +718,9 @@ int show_journal_by_unit( fputs("\n]\n", stdout); finish: - if (m) - free(m); + free(m1); + free(m2); + free(m3); if (j) sd_journal_close(j); |