[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