bionic (8) svlogd.8.gz

Provided by: runit_2.1.2-9.2ubuntu1_amd64 bug

NAME

       svlogd - runit's service logging daemon

SYNOPSIS

       svlogd [-tttv] [-r c] [-R xyz] [-l len] [-b buflen] logs

DESCRIPTION

       logs consists of one or more arguments, each specifying a directory.

       svlogd  continuously  reads log data from its standard input, optionally filters log messages, and writes
       the data to one or more automatically rotated logs.

       Recent log files can automatically be processed by an arbitrary processor program when they are  rotated,
       and svlogd can be told to alert selected log messages to standard error, and through udp.

       svlogd runs until it sees end-of-file on standard input or is sent a TERM signal, see below.

   LOG DIRECTORY
       A  log  directory  log  contains some number of old log files, and the current log file current.  Old log
       files have a file name starting with @ followed by a  precise  timestamp  (see  the  daemontools'  tai64n
       program), indicating when current was rotated and renamed to this file.

       A  log  directory  additionally contains the lock file lock, maybe state and newstate, and optionally the
       file config.  svlogd creates necessary files if they don't exist.

       If svlogd has trouble opening a log directory, it prints a warning, and ignores this log  directory.   If
       svlogd is unable to open all log directories given at the command line, it exits with an error.  This can
       happen on start-up or after receiving a HUP signal.

   LOG FILE ROTATION
       svlogd appends selected log messages to the current log file.  If current has  size  bytes  or  more  (or
       there  is  a  new-line  within  the last len of size bytes), or is older than a specified amount of time,
       current is rotated:

       svlogd closes current, changes permission of current to 0755, renames current to @timestamp.s, and starts
       with  a new empty current.  If svlogd sees num or more old log files in the log directory, it removes the
       oldest one.  Note that this doesn't decrease the number of log files if there are already more  than  num
       log files, this must be done manually, e.g. for keeping 10 log files:

        ls -1 \@* |sort |sed -ne '10,$p' |xargs rm

   PROCESSOR
       If  svlogd  is  told  to  process  recent log files, it saves current to @timestamp.u, feeds @timestamp.u
       through ``sh -c "processor"''  and  writes  the  output  to  @timestamp.t.   If  the  processor  finishes
       successfully,   @timestamp.t   is  renamed  to  @timestamp.s,  and  @timestamp.u  is  deleted;  otherwise
       @timestamp.t is deleted and the processor is started again.   svlogd  also  saves  any  output  that  the
       processor  writes to file descriptor 5, and makes that output available on file descriptor 4 when running
       processor on the next log file rotation.

       A processor is run in the background.  If svlogd sees a previously started processor still  running  when
       trying  to start a new one for the same log, it blocks until the currently running processor has finished
       successfully.  Only the HUP signal works in that situation.  Note that this may block any program feeding
       its log data to svlogd.

   CONFIG
       On  startup,  and  after  receiving  a  HUP  signal,  svlogd  checks  for  each  log directory log if the
       configuration file log/config exists, and if so, reads the file line by line  and  adjusts  configuration
       for log as follows:

       If the line is empty, or starts with a ``#'', it is ignored.  A line of the form

       ssize  sets  the  maximum  file  size  of  current when svlogd should rotate the current log file to size
              bytes.  Default is 1000000.  If size is zero, svlogd doesn't rotate log  files.   You  should  set
              size to at least (2 * len).

       nnum   sets  the number of old log files svlogd should maintain to num.  If svlogd sees more that num old
              log files in log after log file rotation, it deletes the oldest one.  Default is 10.   If  num  is
              zero, svlogd doesn't remove old log files.

       Nmin   sets  the  minimum  number  of old log files svlogd should maintain to min.  min must be less than
              num.  If min is set, and svlogd cannot write to current because the filesystem  is  full,  and  it
              sees more than min old log files, it deletes the oldest one.

       ttimeout
              sets  the  maximum  age  of the current log file when svlogd should rotate the current log file to
              timeout seconds.  If current is timeout seconds old, and is not  empty,  svlogd  forces  log  file
              rotation.

       !processor
              tells  svlogd to feed each recent log file through processor (see above) on log file rotation.  By
              default log files are not processed.

       ua.b.c.d[:port]
              tells svlogd to transmit the first len characters of selected  log  messages  to  the  IP  address
              a.b.c.d, port number port.  If port isn't set, the default port for syslog is used (514).  len can
              be set through the -l option, see below.  If svlogd has trouble sending  udp  packets,  it  writes
              error  messages to the log directory.  Attention: logging through udp is unreliable, and should be
              used in private networks only.

       Ua.b.c.d[:port]
              is the same as the u line above, but the log messages are no longer written to the log  directory,
              but  transmitted  through  udp  only.   Error messages from svlogd concerning sending udp packages
              still go to the log directory.

       pprefix
              tells svlogd to prefix each line to be written to the log directory, to standard error, or through
              UDP, with prefix.

       If  a  line  starts  with  a  -,  +, e, or E, svlogd matches the first len characters of each log message
       against pattern and acts accordingly:

       -pattern
              the log message is deselected.

       +pattern
              the log message is selected.

       epattern
              the log message is selected to be printed to standard error.

       Epattern
              the log message is deselected to be printed to standard error.

       Initially each line is selected to be written to log/current.  Deselected log messages are discarded from
       log.   Initially  each  line  is  deselected  to  be  written to standard err.  Log messages selected for
       standard error are written to standard error.

PATTERN MATCHING

       svlogd matches a log message against the string pattern as follows:

       pattern is applied to the log message one character by one, starting with the first.  A character  not  a
       star  (``*'') and not a plus (``+'') matches itself.  A plus matches the next character in pattern in the
       log message one or more times.  A star before the end of pattern matches any string in  the  log  message
       that does not include the next character in pattern.  A star at the end of pattern matches any string.

       Timestamps optionally added by svlogd are not considered part of the log message.

       An svlogd pattern is not a regular expression.  For example consider a log message like this

        2005-12-18_09:13:50.97618 tcpsvd: info: pid 1977 from 10.4.1.14

       The following pattern doesn't match

        -*pid*

       because  the first star matches up to the first p in tcpsvd, and then the match fails because i is not s.
       To match this log message, you can use a pattern like this instead

        -*: *: pid *

OPTIONS

       -t     timestamp.  Prefix each selected line with  a  precise  timestamp  (see  the  daemontools'  tai64n
              program) when writing to log or to standard error.

       -tt    timestamp.   Prefix  each  selected line with a human readable, sortable UTC timestamp of the form
              YYYY-MM-DD_HH:MM:SS.xxxxx when writing to log or to standard error.

       -ttt   timestamp.  Prefix each selected line with a human readable, sortable UTC timestamp  of  the  form
              YYYY-MM-DDTHH:MM:SS.xxxxx when writing to log or to standard error.

       -r c   replace.   c must be a single character.  Replace non-printable characters in log messages with c.
              Characters are replaced before pattern matching is applied.

       -R xyz replace charset.  Additionally to non-printable characters, replace all characters  found  in  xyz
              with c (default ``_'').

       -l len line length.  Pattern matching applies to the first len characters of a log message only.  Default
              is 1000.

       -b buflen
              buffer size.  Set the size of the buffer svlogd uses when reading from standard input and  writing
              to  logs to buflen.  Default is 1024.  buflen must be greater than len.  For svlogd instances that
              process a lot of data in short time, the buffer size should be increased to improve performance.

       -v     verbose.  Print verbose messages to standard error.

SIGNALS

       If svlogd is sent a HUP signal, it closes and reopens all logs, and updates their configuration according
       to log/config.  If svlogd has trouble opening a log directory, it prints a warning, and discards this log
       directory.  If svlogd is unable to open all log directories given at the command line, it exits  with  an
       error.

       If  svlogd  is sent a TERM signal, or if it sees end-of-file on standard input, it stops reading standard
       input, processes the data in the buffer, waits for all processor subprocesses to finish if any, and exits
       0 as soon as possible.

       If  svlogd  is sent an ALRM signal, it forces log file rotation for all logs with a non empty current log
       file.

SEE ALSO

       sv(8), runsv(8), chpst(8), runit(8), runit-init(8), runsvdir(8), runsvchdir(8)

       http://smarden.org/runit/

AUTHOR

       Gerrit Pape <pape@smarden.org>

                                                                                                       svlogd(8)