| <?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.journal-fields"> |
| |
| <refentryinfo> |
| <title>systemd.journal-fields</title> |
| <productname>systemd</productname> |
| </refentryinfo> |
| |
| <refmeta> |
| <refentrytitle>systemd.journal-fields</refentrytitle> |
| <manvolnum>7</manvolnum> |
| </refmeta> |
| |
| <refnamediv> |
| <refname>systemd.journal-fields</refname> |
| <refpurpose>Special journal fields</refpurpose> |
| </refnamediv> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para>Entries in the journal (as written by |
| <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>) |
| resemble a UNIX process environment block in syntax but with fields that may include binary data. |
| Primarily, fields are formatted UTF-8 text strings, and binary encoding is used only where formatting as |
| UTF-8 text strings makes little sense. New fields may freely be defined by applications, but a few fields |
| have special meanings. All fields with special meanings are optional. In some cases, fields may appear |
| more than once per entry.</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>User Journal Fields</title> |
| |
| <para>User fields are fields that are directly passed from clients |
| and stored in the journal.</para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>MESSAGE=</varname></term> |
| <listitem> |
| <para>The human-readable message string for this entry. This |
| is supposed to be the primary text shown to the user. It is |
| usually not translated (but might be in some cases), and is |
| not supposed to be parsed for metadata.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>MESSAGE_ID=</varname></term> |
| <listitem> |
| <para>A 128-bit message identifier ID for recognizing certain message types, if this is desirable. This |
| should contain a 128-bit ID formatted as a lower-case hexadecimal string, without any separating dashes or |
| suchlike. This is recommended to be a UUID-compatible ID, but this is not enforced, and formatted |
| differently. Developers can generate a new ID for this purpose with <command>systemd-id128 new</command>. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>PRIORITY=</varname></term> |
| <listitem> |
| <para>A priority value between 0 (<literal>emerg</literal>) |
| and 7 (<literal>debug</literal>) formatted as a decimal |
| string. This field is compatible with syslog's priority |
| concept.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>CODE_FILE=</varname></term> |
| <term><varname>CODE_LINE=</varname></term> |
| <term><varname>CODE_FUNC=</varname></term> |
| <listitem> |
| <para>The code location generating this message, if known. |
| Contains the source filename, the line number and the |
| function name.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>ERRNO=</varname></term> |
| <listitem> |
| <para>The low-level Unix error number causing this entry, if |
| any. Contains the numeric value of |
| <citerefentry project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry> |
| formatted as a decimal string.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>INVOCATION_ID=</varname></term> |
| <term><varname>USER_INVOCATION_ID=</varname></term> |
| <listitem> |
| <para>A randomized, unique 128-bit ID identifying each runtime cycle of the unit. This is different from |
| <varname>_SYSTEMD_INVOCATION_ID</varname> in that it is only used for messages coming from systemd code |
| (e.g. logs from the system/user manager or from forked processes performing systemd-related setup).</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>SYSLOG_FACILITY=</varname></term> |
| <term><varname>SYSLOG_IDENTIFIER=</varname></term> |
| <term><varname>SYSLOG_PID=</varname></term> |
| <term><varname>SYSLOG_TIMESTAMP=</varname></term> |
| <listitem> |
| <para>Syslog compatibility fields containing the facility (formatted as |
| decimal string), the identifier string (i.e. "tag"), the client PID, and |
| the timestamp as specified in the original datagram. (Note that the tag is |
| usually derived from glibc's |
| <varname>program_invocation_short_name</varname> variable, see |
| <citerefentry project='die-net'><refentrytitle>program_invocation_short_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.)</para> |
| <para>Note that the journal service does not validate the values of any structured |
| journal fields whose name is not prefixed with an underscore, and this includes any |
| syslog related fields such as these. Hence, applications that supply a facility, PID, |
| or log level are expected to do so properly formatted, i.e. as numeric integers formatted |
| as decimal strings.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>SYSLOG_RAW=</varname></term> |
| <listitem> |
| <para>The original contents of the syslog line as received in the syslog |
| datagram. This field is only included if the <varname>MESSAGE=</varname> |
| field was modified compared to the original payload or the timestamp could |
| not be located properly and is not included in |
| <varname>SYSLOG_TIMESTAMP=</varname>. Message truncation occurs when when |
| the message contains leading or trailing whitespace (trailing and leading |
| whitespace is stripped), or it contains an embedded |
| <constant>NUL</constant> byte (the <constant>NUL</constant> byte and |
| anything after it is not included). Thus, the original syslog line is |
| either stored as <varname>SYSLOG_RAW=</varname> or it can be recreated |
| based on the stored priority and facility, timestamp, identifier, and the |
| message payload in <varname>MESSAGE=</varname>. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>DOCUMENTATION=</varname></term> |
| <listitem> |
| <para>A documentation URL with further information about the topic of the log message. Tools such |
| as <command>journalctl</command> will include a hyperlink to an URL specified this way in their |
| output. Should be an <literal>http://</literal>, <literal>https://</literal>, |
| <literal>file:/</literal>, <literal>man:</literal> or <literal>info:</literal> URL.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>TID=</varname></term> |
| <listitem> |
| <para>The numeric thread ID (TID) the log message originates from.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>UNIT=</varname></term> |
| <term><varname>USER_UNIT=</varname></term> |
| <listitem> |
| <para>The name of a unit. Used by the system and user managers when logging about specific |
| units.</para> |
| |
| <para>When <option>--unit=<replaceable>name</replaceable></option> or |
| <option>--user-unit=<replaceable>name</replaceable></option> are used with |
| <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, a |
| match pattern that includes <literal>UNIT=<replaceable>name</replaceable>.service</literal> or |
| <literal>USER_UNIT=<replaceable>name</replaceable>.service</literal> will be generated.</para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>Trusted Journal Fields</title> |
| |
| <para>Fields prefixed with an underscore are trusted fields, i.e. |
| fields that are implicitly added by the journal and cannot be |
| altered by client code.</para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>_PID=</varname></term> |
| <term><varname>_UID=</varname></term> |
| <term><varname>_GID=</varname></term> |
| <listitem> |
| <para>The process, user, and group ID of the process the |
| journal entry originates from formatted as a decimal |
| string. Note that entries obtained via <literal>stdout</literal> or |
| <literal>stderr</literal> of forked processes will contain credentials valid for a parent |
| process (that initiated the connection to <command>systemd-journald</command>).</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_COMM=</varname></term> |
| <term><varname>_EXE=</varname></term> |
| <term><varname>_CMDLINE=</varname></term> |
| <listitem> |
| <para>The name, the executable path, and the command line of |
| the process the journal entry originates from.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_CAP_EFFECTIVE=</varname></term> |
| <listitem> |
| <para>The effective |
| <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| of the process the journal entry originates from.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_AUDIT_SESSION=</varname></term> |
| <term><varname>_AUDIT_LOGINUID=</varname></term> |
| <listitem> |
| <para>The session and login UID of the process the journal |
| entry originates from, as maintained by the kernel audit |
| subsystem.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_SYSTEMD_CGROUP=</varname></term> |
| <term><varname>_SYSTEMD_SLICE=</varname></term> |
| <term><varname>_SYSTEMD_UNIT=</varname></term> |
| <term><varname>_SYSTEMD_USER_UNIT=</varname></term> |
| <term><varname>_SYSTEMD_USER_SLICE=</varname></term> |
| <term><varname>_SYSTEMD_SESSION=</varname></term> |
| <term><varname>_SYSTEMD_OWNER_UID=</varname></term> |
| |
| <listitem> |
| <para>The control group path in the systemd hierarchy, the systemd slice unit name, the systemd |
| unit name, the unit name in the systemd user manager (if any), the systemd session ID (if any), and |
| the owner UID of the systemd user unit or systemd session (if any) of the process the journal entry |
| originates from.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_SELINUX_CONTEXT=</varname></term> |
| <listitem> |
| <para>The SELinux security context (label) of the process |
| the journal entry originates from.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_SOURCE_REALTIME_TIMESTAMP=</varname></term> |
| <listitem> |
| <para>The earliest trusted timestamp of the message, if any |
| is known that is different from the reception time of the |
| journal. This is the time in microseconds since the epoch |
| UTC, formatted as a decimal string.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_BOOT_ID=</varname></term> |
| <listitem> |
| <para>The kernel boot ID for the boot the message was |
| generated in, formatted as a 128-bit hexadecimal |
| string.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_MACHINE_ID=</varname></term> |
| <listitem> |
| <para>The machine ID of the originating host, as available |
| in |
| <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_SYSTEMD_INVOCATION_ID=</varname></term> |
| <listitem> |
| <para>The invocation ID for the runtime cycle of the unit |
| the message was generated in, as available to processes |
| of the unit in <varname>$INVOCATION_ID</varname> (see |
| <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>).</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_HOSTNAME=</varname></term> |
| <listitem> |
| <para>The name of the originating host.</para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>_TRANSPORT=</varname></term> |
| <listitem> |
| <para>How the entry was received by the journal service. |
| Valid transports are: |
| </para> |
| <variablelist> |
| <varlistentry> |
| <term> |
| <option>audit</option> |
| </term> |
| <listitem> |
| <para>for those read from the kernel audit subsystem |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term> |
| <option>driver</option> |
| </term> |
| <listitem> |
| <para>for internally generated messages |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term> |
| <option>syslog</option> |
| </term> |
| <listitem> |
| <para>for those received via the local syslog socket |
| with the syslog protocol |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term> |
| <option>journal</option> |
| </term> |
| <listitem> |
| <para>for those received via the native journal |
| protocol |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term> |
| <option>stdout</option> |
| </term> |
| <listitem> |
| <para>for those read from a service's standard output |
| or error output |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term> |
| <option>kernel</option> |
| </term> |
| <listitem> |
| <para>for those read from the kernel |
| </para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_STREAM_ID=</varname></term> |
| <listitem> |
| <para>Only applies to <literal>_TRANSPORT=stdout</literal> records: specifies a randomized 128bit ID assigned |
| to the stream connection when it was first created. This ID is useful to reconstruct individual log streams |
| from the log records: all log records carrying the same stream ID originate from the same stream.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_LINE_BREAK=</varname></term> |
| <listitem> |
| <para>Only applies to <literal>_TRANSPORT=stdout</literal> records: indicates that the log message |
| in the standard output/error stream was not terminated with a normal newline character |
| (<literal>\n</literal>, i.e. ASCII 10). Specifically, when set this field is one of |
| <option>nul</option> (in case the line was terminated by a <constant>NUL</constant> byte), <option>line-max</option> (in |
| case the maximum log line length was reached, as configured with <varname>LineMax=</varname> in |
| <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>), |
| <option>eof</option> (if this was the last log record of a stream and the stream ended without a |
| final newline character), or <option>pid-change</option> (if the process which generated the log |
| output changed in the middle of a line). Note that this record is not generated when a normal |
| newline character was used for marking the log line end.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_NAMESPACE=</varname></term> |
| |
| <listitem><para>If this file was written by a <command>systemd-journald</command> instance managing a |
| journal namespace that is not the default, this field contains the namespace identifier. See |
| <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry> |
| for details about journal namespaces.</para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>Kernel Journal Fields</title> |
| |
| <para>Kernel fields are fields that are used by messages |
| originating in the kernel and stored in the journal.</para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>_KERNEL_DEVICE=</varname></term> |
| <listitem> |
| <para>The kernel device name. If the entry is associated to a block device, contains the major and |
| minor numbers of the device node, separated by <literal>:</literal> and prefixed by |
| <literal>b</literal>. Similarly for character devices, but prefixed by <literal>c</literal>. For |
| network devices, this is the interface index prefixed by <literal>n</literal>. For all other |
| devices, this is the subsystem name prefixed by <literal>+</literal>, followed by |
| <literal>:</literal>, followed by the kernel device name.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_KERNEL_SUBSYSTEM=</varname></term> |
| <listitem> |
| <para>The kernel subsystem name.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_UDEV_SYSNAME=</varname></term> |
| <listitem> |
| <para>The kernel device name as it shows up in the device |
| tree below <filename>/sys/</filename>.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_UDEV_DEVNODE=</varname></term> |
| <listitem> |
| <para>The device node path of this device in |
| <filename>/dev/</filename>.</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><varname>_UDEV_DEVLINK=</varname></term> |
| <listitem> |
| <para>Additional symlink names pointing to the device node |
| in <filename>/dev/</filename>. This field is frequently set |
| more than once per entry.</para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>Fields to log on behalf of a different program</title> |
| |
| <para>Fields in this section are used by programs to specify that |
| they are logging on behalf of another program or unit. |
| </para> |
| |
| <para>Fields used by the <command>systemd-coredump</command> |
| coredump kernel helper: |
| </para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>COREDUMP_UNIT=</varname></term> |
| <term><varname>COREDUMP_USER_UNIT=</varname></term> |
| <listitem> |
| <para>Used to annotate messages containing coredumps from |
| system and session units. See |
| <citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>. |
| </para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| |
| <para>Privileged programs (currently UID 0) may attach |
| <varname>OBJECT_PID=</varname> to a message. This will instruct |
| <command>systemd-journald</command> to attach additional fields on |
| behalf of the caller:</para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>OBJECT_PID=<replaceable>PID</replaceable></varname></term> |
| <listitem> |
| <para>PID of the program that this message pertains to. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>OBJECT_UID=</varname></term> |
| <term><varname>OBJECT_GID=</varname></term> |
| <term><varname>OBJECT_COMM=</varname></term> |
| <term><varname>OBJECT_EXE=</varname></term> |
| <term><varname>OBJECT_CMDLINE=</varname></term> |
| <term><varname>OBJECT_AUDIT_SESSION=</varname></term> |
| <term><varname>OBJECT_AUDIT_LOGINUID=</varname></term> |
| <term><varname>OBJECT_SYSTEMD_CGROUP=</varname></term> |
| <term><varname>OBJECT_SYSTEMD_SESSION=</varname></term> |
| <term><varname>OBJECT_SYSTEMD_OWNER_UID=</varname></term> |
| <term><varname>OBJECT_SYSTEMD_UNIT=</varname></term> |
| <term><varname>OBJECT_SYSTEMD_USER_UNIT=</varname></term> |
| <listitem> |
| <para>These are additional fields added automatically by |
| <command>systemd-journald</command>. Their meaning is the |
| same as |
| <varname>_UID=</varname>, |
| <varname>_GID=</varname>, |
| <varname>_COMM=</varname>, |
| <varname>_EXE=</varname>, |
| <varname>_CMDLINE=</varname>, |
| <varname>_AUDIT_SESSION=</varname>, |
| <varname>_AUDIT_LOGINUID=</varname>, |
| <varname>_SYSTEMD_CGROUP=</varname>, |
| <varname>_SYSTEMD_SESSION=</varname>, |
| <varname>_SYSTEMD_UNIT=</varname>, |
| <varname>_SYSTEMD_USER_UNIT=</varname>, and |
| <varname>_SYSTEMD_OWNER_UID=</varname> |
| as described above, except that the process identified by |
| <replaceable>PID</replaceable> is described, instead of the |
| process which logged the message.</para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| |
| </refsect1> |
| |
| <refsect1> |
| <title>Address Fields</title> |
| |
| <para>During serialization into external formats, such as the |
| <ulink url="https://systemd.io/JOURNAL_EXPORT_FORMATS#journal-export-format">Journal Export Format</ulink> |
| or the |
| <ulink url="https://systemd.io/JOURNAL_EXPORT_FORMATS#journal-json-format">Journal JSON Format</ulink>, |
| the addresses of journal entries are |
| serialized into fields prefixed with double underscores. Note that |
| these are not proper fields when stored in the journal but for |
| addressing metadata of entries. They cannot be written as part of |
| structured log entries via calls such as |
| <citerefentry><refentrytitle>sd_journal_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>. |
| They may also not be used as matches for |
| <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>. |
| </para> |
| |
| <variablelist class='journal-directives'> |
| <varlistentry> |
| <term><varname>__CURSOR=</varname></term> |
| <listitem> |
| <para>The cursor for the entry. A cursor is an opaque text |
| string that uniquely describes the position of an entry in |
| the journal and is portable across machines, platforms and |
| journal files. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>__REALTIME_TIMESTAMP=</varname></term> |
| <listitem> |
| <para>The wallclock time |
| (<constant>CLOCK_REALTIME</constant>) at the point in time |
| the entry was received by the journal, in microseconds since |
| the epoch UTC, formatted as a decimal string. This has |
| different properties from |
| <literal>_SOURCE_REALTIME_TIMESTAMP=</literal>, as it is |
| usually a bit later but more likely to be monotonic. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>__MONOTONIC_TIMESTAMP=</varname></term> |
| <listitem> |
| <para>The monotonic time |
| (<constant>CLOCK_MONOTONIC</constant>) at the point in time |
| the entry was received by the journal in microseconds, |
| formatted as a decimal string. To be useful as an address |
| for the entry, this should be combined with the boot ID in |
| <literal>_BOOT_ID=</literal>. |
| </para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| <para> |
| <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>, |
| <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry> |
| </para> |
| </refsect1> |
| |
| </refentry> |