[systemd-devel] [PATCH] query for user unit information in the journal
Lennart Poettering
lennart at poettering.net
Fri Mar 1 05:41:37 PST 2013
On Thu, 21.02.13 16:39, Daniel Wallace (danielwallace at gtmanfred.com) wrote:
> Add --user-unit= to make it possible to query for user logs by the name
> of the service.
Thanks! Applied!
> ---
> man/journalctl.xml | 11 +++++++++++
> shell-completion/systemd-bash-completion.sh | 5 ++++-
> shell-completion/systemd-zsh-completion.zsh | 1 +
> src/journal/journalctl.c | 13 ++++++++++++-
> 4 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/man/journalctl.xml b/man/journalctl.xml
> index 5ed0e1f..09a96ac 100644
> --- a/man/journalctl.xml
> +++ b/man/journalctl.xml
> @@ -306,6 +306,17 @@
> </varlistentry>
>
> <varlistentry>
> + <term><option>--user-unit=</option></term>
> +
> + <listitem><para>Show data only of the
> + specified user session unit. This will
> + add a match for
> + <literal>_SYSTEMD_USER_UNIT=</literal>
> + for the specified
> + unit.</para></listitem>
> + </varlistentry>
> +
> + <varlistentry>
> <term><option>-p</option></term>
> <term><option>--priority=</option></term>
>
> diff --git a/shell-completion/systemd-bash-completion.sh b/shell-completion/systemd-bash-completion.sh
> index 1132b3c..117dc55 100644
> --- a/shell-completion/systemd-bash-completion.sh
> +++ b/shell-completion/systemd-bash-completion.sh
> @@ -300,7 +300,7 @@ _journalctl() {
> -h --help -l --local --new-id128 -m --merge --no-pager
> --no-tail -q --quiet --setup-keys --this-boot --verify
> --version --list-catalog --update-catalog'
> - [ARG]='-D --directory -F --field -o --output -u --unit'
> + [ARG]='-D --directory -F --field -o --output -u --unit --user-unit'
> [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until
> --verify-key'
> )
> @@ -320,6 +320,9 @@ _journalctl() {
> --unit|-u)
> comps=$(journalctl -F '_SYSTEMD_UNIT')
> ;;
> + --user-unit)
> + comps=$(journalctl -F '_SYSTEMD_USER_UNIT')
> + ;;
> *)
> return 0
> ;;
> diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh
> index 177a564..46e29b2 100644
> --- a/shell-completion/systemd-zsh-completion.zsh
> +++ b/shell-completion/systemd-zsh-completion.zsh
> @@ -70,6 +70,7 @@ _ctls()
> {-c,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \
> {-b,--this-boot}'[Show data only from current boot]' \
> {-u,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \
> + '--user-unit[Show data only from the specified user session unit]:units:_journal_fields _SYSTEMD_USER_UNIT' \
> {-p,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \
> {-f,--follow}'[Follow journal]' \
> {-n,--lines=}'[Number of journal entries to show]:integer' \
> diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
> index 0afeef9..bfea699 100644
> --- a/src/journal/journalctl.c
> +++ b/src/journal/journalctl.c
> @@ -75,6 +75,7 @@ static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
> static usec_t arg_since, arg_until;
> static bool arg_since_set = false, arg_until_set = false;
> static const char *arg_unit = NULL;
> +static const char *arg_unit_type = NULL;
> static const char *arg_field = NULL;
> static bool arg_catalog = false;
>
> @@ -99,6 +100,7 @@ static int help(void) {
> " -c --cursor=CURSOR Start showing entries from specified cursor\n"
> " -b --this-boot Show data only from current boot\n"
> " -u --unit=UNIT Show data only from the specified unit\n"
> + " --user-unit=UNIT Show data only from the specified user session unit\n"
> " -p --priority=RANGE Show only messages within the specified priority range\n"
> " -f --follow Follow journal\n"
> " -n --lines[=INTEGER] Number of journal entries to show\n"
> @@ -150,6 +152,7 @@ static int parse_argv(int argc, char *argv[]) {
> ARG_DISK_USAGE,
> ARG_SINCE,
> ARG_UNTIL,
> + ARG_USER_UNIT,
> ARG_LIST_CATALOG,
> ARG_UPDATE_CATALOG
> };
> @@ -179,6 +182,7 @@ static int parse_argv(int argc, char *argv[]) {
> { "cursor", required_argument, NULL, 'c' },
> { "since", required_argument, NULL, ARG_SINCE },
> { "until", required_argument, NULL, ARG_UNTIL },
> + { "user-unit", required_argument, NULL, ARG_USER_UNIT },
> { "unit", required_argument, NULL, 'u' },
> { "field", required_argument, NULL, 'F' },
> { "catalog", no_argument, NULL, 'x' },
> @@ -401,8 +405,14 @@ static int parse_argv(int argc, char *argv[]) {
> arg_until_set = true;
> break;
>
> + case ARG_USER_UNIT:
> + arg_unit = optarg;
> + arg_unit_type = "_SYSTEMD_USER_UNIT=";
> + break;
> +
> case 'u':
> arg_unit = optarg;
> + arg_unit_type = "_SYSTEMD_UNIT=";
> break;
>
> case '?':
> @@ -568,7 +578,8 @@ static int add_unit(sd_journal *j) {
> if (!u)
> return log_oom();
>
> - m = strappend("_SYSTEMD_UNIT=", u);
> + m = strappend(arg_unit_type, u);
> +
> if (!m)
> return log_oom();
>
Lennart
--
Lennart Poettering - Red Hat, Inc.
More information about the systemd-devel
mailing list