Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
svlogd(8)		     System Manager's Manual		       svlogd(8)

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 fil-
     ters 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 ig-
     nores 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  cur-
     rent  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 al-
     ready 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  @time-
     stamp.u,  feeds  @timestamp.u  through ``sh -c "processor"'' and writes the
     output to @timestamp.t.  If the  processor  finishes  successfully,  @time-
     stamp.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 rota-
	    tion, 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  ro-
	    tate 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.  Er-
	    ror 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 charac-
     ters 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 char-
	    acters in log messages with c.  Characters are replaced before  pat-
	    tern 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  in-
     put,  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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=svlogd&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help