<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="systemd-cat"
    xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd-cat</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-cat</refentrytitle>
    <manvolnum>1</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-cat</refname>
    <refpurpose>Connect a pipeline or program's output with the journal</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>systemd-cat <arg choice="opt" rep="repeat">OPTIONS</arg> <arg>COMMAND</arg> <arg choice="opt" rep="repeat">ARGUMENTS</arg></command>
    </cmdsynopsis>
    <cmdsynopsis>
      <command>systemd-cat <arg choice="opt" rep="repeat">OPTIONS</arg></command>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><command>systemd-cat</command> may be used to connect the
    standard input and output of a process to the journal, or as a
    filter tool in a shell pipeline to pass the output the previous
    pipeline element generates to the journal.</para>

    <para>If no parameter is passed, <command>systemd-cat</command>
    will write everything it reads from standard input (stdin) to the
    journal.</para>

    <para>If parameters are passed, they are executed as command line
    with standard output (stdout) and standard error output (stderr)
    connected to the journal, so that all it writes is stored in the
    journal.</para>
  </refsect1>

  <refsect1>
    <title>Options</title>

    <para>The following options are understood:</para>

    <variablelist>
      <xi:include href="standard-options.xml" xpointer="help" />
      <xi:include href="standard-options.xml" xpointer="version" />

      <varlistentry>
        <term><option>-t</option></term>
        <term><option>--identifier=</option></term>

        <listitem><para>Specify a short string that is used to
        identify the logging tool. If not specified, no identification
        string is written to the journal.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-p</option></term>
        <term><option>--priority=</option></term>

        <listitem><para>Specify the default priority level for the
        logged messages. Pass one of
        <literal>emerg</literal>,
        <literal>alert</literal>,
        <literal>crit</literal>,
        <literal>err</literal>,
        <literal>warning</literal>,
        <literal>notice</literal>,
        <literal>info</literal>,
        <literal>debug</literal>, or a
        value between 0 and 7 (corresponding to the same named
        levels). These priority values are the same as defined by
        <citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
        Defaults to <literal>info</literal>. Note that this simply
        controls the default, individual lines may be logged with
        different levels if they are prefixed accordingly. For details,
        see <option>--level-prefix=</option> below.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--stderr-priority=</option></term>

        <listitem><para>Specifies the default priority level for
        messages from the process's standard error output (stderr).
        Usage of this option is the same as the
        <option>--priority=</option> option, above, and both can be
        used at once. When both are used, <option>--priority=</option>
        will specify the default priority for standard output (stdout).
        </para>

        <para>If <option>--stderr-priority=</option> is not specified,
        messages from stderr will still be logged, with the same
        default priority level as stdout.</para>

        <para>Also, note that when stdout and stderr use the same
        default priority, the messages will be strictly ordered,
        because one channel is used for both. When the default priority
        differs, two channels are used, and so stdout messages will not
        be strictly ordered with respect to stderr messages - though
        they will tend to be approximately ordered.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--level-prefix=</option></term>

        <listitem><para>Controls whether lines read are parsed for
        syslog priority level prefixes. If enabled (the default), a
        line prefixed with a priority prefix such as
        <literal>&lt;5&gt;</literal> is logged at priority 5
        (<literal>notice</literal>), and similar for the other
        priority levels. Takes a boolean argument.</para></listitem>
      </varlistentry>

    </variablelist>

  </refsect1>

  <refsect1>
    <title>Exit status</title>

    <para>On success, 0 is returned, a non-zero failure code
    otherwise.</para>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <example>
      <title>Invoke a program</title>

      <para>This calls <filename index="false">/bin/ls</filename>
      with standard output and error connected to the journal:</para>

      <programlisting># systemd-cat ls</programlisting>
    </example>

    <example>
      <title>Usage in a shell pipeline</title>

      <para>This builds a shell pipeline also invoking
      <filename>/bin/ls</filename> and writes the output it generates
      to the journal:</para>

      <programlisting># ls | systemd-cat</programlisting>
    </example>

    <para>Even though the two examples have very similar effects the
    first is preferable since only one process is running at a time,
    and both stdout and stderr are captured while in the second
    example, only stdout is captured.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>logger</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
