Skip to content

Latest commit

 

History

History
354 lines (275 loc) · 17.1 KB

man logger.md

File metadata and controls

354 lines (275 loc) · 17.1 KB

LOGGER(1) User Commands LOGGER(1)

NAME        

   logger - enter messages into the system log

SYNOPSIS        

   **logger** [options] [_message_]

DESCRIPTION        

   **logger** makes entries in the system log.

   When the optional _message_ argument is present, it is written to the
   log.  If it is not present, and the **-f** option is not given either,
   then standard input is logged.

OPTIONS        

   **-d**, **--udp**
          Use datagrams (UDP) only.  By default the connection is tried
          to the syslog port defined in /etc/services, which is often
          514 .

          See also **--server** and **--socket** to specify where to connect.

   **-e**, **--skip-empty**
          Ignore empty lines when processing files.  An empty line is
          defined to be a line without any characters.  Thus a line
          consisting only of whitespace is NOT considered empty.  Note
          that when the **--prio-prefix** option is specified, the priority
          is not part of the line.  Thus an empty line in this mode is a
          line that does not have any characters after the priority
          prefix (e.g. **<13>**).

   **-f**, **--file** _file_
          Log the contents of the specified _file_.  This option cannot be
          combined with a command-line message.

   **-i** Log the PID of the logger process with each line.

   **--id**[**=**_id_]
          Log the PID of the logger process with each line.  When the
          optional argument _id_ is specified, then it is used instead of
          the logger command's PID.  The use of **--id=$$** (PPID) is
          recommended in scripts that send several messages.

          Note that the system logging infrastructure (for example
          **systemd** when listening on /dev/log) may follow local socket
          credentials to overwrite the PID specified in the message.
          [logger(1)](http://man7.org/linux/man-pages/man1/logger.1.html) is able to set those socket credentials to the given
          _id_, but only if you have root permissions and a process with
          the specified PID exists, otherwise the socket credentials are
          not modified and the problem is silently ignored.

   **--journald**[**=**_file_]
          Write a systemd journal entry.  The entry is read from the
          given _file_, when specified, otherwise from standard input.
          Each line must begin with a field that is accepted by
          journald; see [systemd.journal-fields(7)](http://man7.org/linux/man-pages/man7/systemd.journal-fields.7.html) for details.  The use
          of a MESSAGE_ID field is generally a good idea, as it makes
          finding entries easy.  Examples:

              **logger --journald <<end**
              **MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309**
              **MESSAGE=The dogs bark, but the caravan goes on.**
              **DOGS=bark**
              **CARAVAN=goes on**
              **end**

              **logger --journald=entry.txt**

          Notice that **--journald** will ignore values of other options,
          such as priority.  If priority is needed it must be within
          input, and use PRIORITY field.  The simple execution of
          **journalctl** will display MESSAGE field.  Use **journalctl**
          **--output json-pretty** to see rest of the fields.

          To include newlines in MESSAGE, specify MESSAGE several times.
          This is handled as a special case, other fields will be stored
          as an array in the journal if they appear multiple times.

   **--msgid** _msgid_
          Sets the RFC5424 MSGID field.  Note that the space character
          is not permitted inside of _msgid_.  This option is only used if
          **--rfc5424** is specified as well; otherwise, it is silently
          ignored.

   **-n**, **--server** _server_
          Write to the specified remote syslog _server_ instead of to the
          system log socket.  Unless **--udp** or **--tcp** is specified, **logger**
          will first try to use UDP, but if this fails a TCP connection
          is attempted.

   **--no-act**
          Causes everything to be done except for writing the log
          message to the system log, and removing the connection or the
          journal.  This option can be used together with **--stderr** for
          testing purposes.

   **--octet-count**
          Use the RFC 6587 octet counting framing method for sending
          messages.  When this option is not used, the default is no
          framing on UDP, and RFC6587 non-transparent framing (also
          known as octet stuffing) on TCP.

   **-P**, **--port** _port_
          Use the specified _port_.  When this option is not specified,
          the port defaults to syslog for udp and to syslog-conn for tcp
          connections.

   **-p**, **--priority** _priority_
          Enter the message into the log with the specified _priority_.
          The priority may be specified numerically or as a
          _facility_._level_ pair.  For example, **-p local3.info** logs the
          message as informational in the local3 facility.  The default
          is **user.notice**.

   **--prio-prefix**
          Look for a syslog prefix on every line read from standard
          input.  This prefix is a decimal number within angle brackets
          that encodes both the facility and the level.  The number is
          constructed by multiplying the facility by 8 and then adding
          the level.  For example, **local0.info**, meaning facility=16 and
          level=6, becomes **<134>**.

          If the prefix contains no facility, the facility defaults to
          what is specified by the **-p** option.  Similarly, if no prefix
          is provided, the line is logged using the _priority_ given with
          **-p**.

          This option doesn't affect a command-line message.

   **--rfc3164**
          Use the RFC 3164 BSD syslog protocol to submit messages to a
          remote server.

   **--rfc5424**[**=**_without_]
          Use the RFC 5424 syslog protocol to submit messages to a
          remote server.  The optional _without_ argument can be a comma-
          separated list of the following values: **notq**, **notime**, **nohost**.

          The **notq** value suppresses the time-quality structured data
          from the submitted message.  The time-quality information
          shows whether the local clock was synchronized plus the
          maximum number of microseconds the timestamp might be off.
          The time quality is also automatically suppressed when **--sd-id**
          **timeQuality** is specified.

          The **notime** value (which implies **notq**) suppresses the complete
          sender timestamp that is in ISO-8601 format, including
          microseconds and timezone.

          The **nohost** value suppresses [gethostname(2)](http://man7.org/linux/man-pages/man2/gethostname.2.html) information from
          the message header.

          The RFC 5424 protocol has been the default for **logger** since
          version 2.26.

   **-s**, **--stderr**
          Output the message to standard error as well as to the system
          log.

   **--sd-id** _name_[**@**_digits_]
          Specifies a structured data element ID for an RFC 5424 message
          header.  The option has to be used before **--sd-param** to
          introduce a new element.  The number of structured data
          elements is unlimited.  The ID (_name_ plus possibly **@**_digits_) is
          case-sensitive and uniquely identifies the type and purpose of
          the element.  The same ID must not exist more than once in a
          message.  The **@**_digits_ part is required for user-defined non-
          standardized IDs.

          **logger** currently generates the **timeQuality** standardized
          element only.  RFC 5424 also describes the elements **origin**
          (with parameters ip, enterpriseId, software and swVersion) and
          **meta** (with parameters sequenceId, sysUpTime and language).
          These element IDs may be specified without the **@**_digits_ suffix.

   **--sd-param** _name_**="**_value_**"**
          Specifies a structured data element parameter, a name and
          value pair.  The option has to be used after **--sd-id** and may
          be specified more than once for the same element.  Note that
          the quotation marks around _value_ are required and must be
          escaped on the command line.

              **logger --rfc5424 --sd-id zoo@123               **
                               **--sd-param tiger="hungry"   **
                               **--sd-param zebra="running"  **
                               **--sd-id manager@123           **
                               **--sd-param onMeeting="yes"  **
                               **"this is message"**

          produces:

            **<13>1 2015-10-01T14:07:59.168662+02:00 ws kzak - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="218616"][zoo@123 tiger="hungry" zebra="running"][manager@123 onMeeting="yes"] this is message**

   **-S**, **--size** _size_
          Sets the maximum permitted message size to _size_.  The default
          is 1KiB characters, which is the limit traditionally used and
          specified in RFC 3164.  With RFC 5424, this limit has become
          flexible.  A good assumption is that RFC 5424 receivers can at
          least process 4KiB messages.

          Most receivers accept messages larger than 1KiB over any type
          of syslog protocol.  As such, the **--size** option affects logger
          in all cases (not only when **--rfc5424** was used).

          Note: the message-size limit limits the overall message size,
          including the syslog header.  Header sizes vary depending on
          the selected options and the hostname length.  As a rule of
          thumb, headers are usually not longer than 50 to 80
          characters.  When selecting a maximum message size, it is
          important to ensure that the receiver supports the max size as
          well, otherwise messages may become truncated.  Again, as a
          rule of thumb two to four KiB message size should generally be
          OK, whereas anything larger should be verified to work.

   **--socket-errors**[**=**_mode_]
          Print errors about Unix socket connections.  The _mode_ can be a
          value of **off**, **on**, or **auto**.  When the mode is auto logger will
          detect if the init process is systemd, and if so assumption is
          made /dev/log can be used early at boot.  Other init systems
          lack of /dev/log will not cause errors that is identical with
          messaging using [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) system call.  The [logger(1)](http://man7.org/linux/man-pages/man1/logger.1.html) before
          version 2.26 used openlog, and hence was unable to detected
          loss of messages sent to Unix sockets.

          The default mode is **auto**.  When errors are not enabled lost
          messages are not communicated and will result to successful
          return value of [logger(1)](http://man7.org/linux/man-pages/man1/logger.1.html) invocation.

   **-T**, **--tcp**
          Use stream (TCP) only.  By default the connection is tried to
          the _syslog-conn_ port defined in /etc/services, which is often
          _601_.

          See also **--server** and **--socket** to specify where to connect.

   **-t**, **--tag** _tag_
          Mark every line to be logged with the specified _tag_.  The
          default tag is the name of the user logged in on the terminal
          (or a user name based on effective user ID).

   **-u**, **--socket** _socket_
          Write to the specified _socket_ instead of to the system log
          socket.

   **--** End the argument list.  This allows the _message_ to start with
          a hyphen (-).

   **-V**, **--version**
          Display version information and exit.

   **-h**, **--help**
          Display help text and exit.

RETURN VALUE        

   The **logger** utility exits 0 on success, and >0 if an error occurs.

FACILITIES AND LEVELS        

   Valid facility names are:

          **auth**
          **authpriv** for security information of a sensitive nature
          **cron**

          **daemon**
          **ftp**
          **kern** cannot be generated from userspace process,
                     automatically converted to **user**
          **lpr**
          **mail**
          **news**
          **syslog**
          **user**
          **uucp**
          **local0**
            **to**
          **local7**
          **security** deprecated synonym for **auth**

   Valid level names are:

          **emerg**
          **alert**
          **crit**
          **err**
          **warning**
          **notice**
          **info**
          **debug**
          **panic** deprecated synonym for **emerg**
          **error** deprecated synonym for **err**
          **warn** deprecated synonym for **warning**

   For the priority order and intended purposes of these facilities and
   levels, see [syslog(3)](http://man7.org/linux/man-pages/man3/syslog.3.html).

EXAMPLES        

   **logger System rebooted**
   **logger -p local0.notice -t HOSTIDM -f /dev/idmc**
   **logger -n loghost.example.com System rebooted**

SEE ALSO        

   [journalctl(1)](http://man7.org/linux/man-pages/man1/journalctl.1.html), [syslog(3)](http://man7.org/linux/man-pages/man3/syslog.3.html), [systemd.journal-fields(7)](http://man7.org/linux/man-pages/man7/systemd.journal-fields.7.html)

STANDARDS        

   The **logger** command is expected to be IEEE Std 1003.2 ("POSIX.2")
   compatible.

AUTHORS        

   The **logger** command was originally written by University of California
   in 1983-1993 and later rewritten by Karel Zak ⟨kzak@redhat.com⟩,
   Rainer Gerhards ⟨rgerhards@adiscon.com⟩ and Sami Kerola
   ⟨kerolasa@iki.fi⟩.

AVAILABILITY        

   The logger command is part of the util-linux package and is available
   from Linux Kernel Archive 
   ⟨[https://www.kernel.org/pub/linux/utils/util-linux/](https://www.kernel.org/pub/linux/utils/util-linux/)⟩.

COLOPHON        

   This page is part of the _util-linux_ (a random collection of Linux
   utilities) project.  Information about the project can be found at 
   ⟨[https://www.kernel.org/pub/linux/utils/util-linux/](https://www.kernel.org/pub/linux/utils/util-linux/)⟩.  If you have a
   bug report for this manual page, send it to
   util-linux@vger.kernel.org.  This page was obtained from the
   project's upstream Git repository
   ⟨git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git⟩ on
   2019-05-09.  (At that time, the date of the most recent commit that
   was found in the repository was 2019-05-07.)  If you discover any
   rendering problems in this HTML version of the page, or you believe
   there is a better or more up-to-date source for the page, or you have
   corrections or improvements to the information in this COLOPHON
   (which is _not_ part of the original manual page), send a mail to
   man-pages@man7.org

util-linux November 2015 LOGGER(1)


logger НЕ ПЕРЕВЕДЕНО