MEDIUM: sink: add global statement to create a new ring (sink buffer)
authorEmeric Brun <ebrun@haproxy.com>
Mon, 11 May 2020 12:41:31 +0000 (14:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 19 May 2020 09:04:11 +0000 (11:04 +0200)
commit957ec59571ce7eead86fb138e506c937c271e0b6
tree55174ab9442fcbb793e7983ecae9ba961229d447
parente709e1e7771bdaf1cfa6356ae448e75e614532b1
MEDIUM: sink: add global statement to create a new ring (sink buffer)

This patch adds the new global statement:
ring <name> [desc <desc>] [format <format>] [size <size>] [maxlen <length>]
  Creates a named ring buffer which could be used on log line for instance.

  <desc> is an optionnal description string of the ring. It will appear on
         CLI. By default, <name> is reused to fill this field.

  <format> is the log format used when generating syslog messages. It may be
           one of the following :

    iso       A message containing only the ISO date, followed by the text.
              The PID, process name and system name are omitted. This is
              designed to be used with a local log server.

    raw       A message containing only the text. The level, PID, date, time,
              process name and system name are omitted. This is designed to be
              used in containers or during development, where the severity only
              depends on the file descriptor used (stdout/stderr). This is
              the default.

    rfc3164   The RFC3164 syslog message format. This is the default.
              (https://tools.ietf.org/html/rfc3164)

    rfc5424   The RFC5424 syslog message format.
              (https://tools.ietf.org/html/rfc5424)

    short     A message containing only a level between angle brackets such as
              '<3>', followed by the text. The PID, date, time, process name
              and system name are omitted. This is designed to be used with a
              local log server. This format is compatible with what the systemd
              logger consumes.

    timed     A message containing only a level between angle brackets such as
              '<3>', followed by ISO date and by the text. The PID, process
              name and system name are omitted. This is designed to be
              used with a local log server.

  <length> is the maximum length of event message stored into the ring,
           including formatted header. If the event message is longer
           than <length>, it would be truncated to this length.

  <name> is the ring identifier, which follows the same naming convention as
         proxies and servers.

  <size> is the optionnal size in bytes. Default value is set to BUFSIZE.

Note: Historically sink's name and desc were refs on const strings. But with new
configurable rings a dynamic allocation is needed.
doc/configuration.txt
include/common/cfgparse.h
include/proto/sink.h
include/types/sink.h
src/cfgparse-global.c
src/sink.c