G. Pape
runit
svlogd - runit's service logging daemon
svlogd [-tv] [-r c] [-R
abc] [-l n] [-b n] logs
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.
svlogd
runs until it sees end-of-file on standard input or is sent a TERM signal,
see below.
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 tai64n(8)), 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.
svlogd appends selected log messages to the current log file. If
current has size bytes or more size (or there is a new-line withing the
last len of size bytes) 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 dir,
it removes the oldest.
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.u is deleted and @timestamp.t is renamed to @timestamp.s,
otherwise @timestamp.t is deleted and the processor is started again. svlogd
also saves any output that the processor writes to filedescriptor 5, and
make that output available on filedescriptor 4 when it runs 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.
On
startup, and after receiving a HUP signal, svlogd checks for each 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,
less than two characters long, 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.
- nnum
- sets
the maximum 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.
- !processor
- tells svlogd to feed each recent
log file through processor (see above) on log file rotation. By default
log files are not processed.
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
- log messages matching pattern are printed
to standard error.
- Epattern
- log messages not matching pattern are printed
to standard error.
Initially each line is selected. Deselected log messages
are discarded from log.
- -t
- timestamp. Prefix each selected line with
a precise timestamp (see tai64n(8)) 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. Character are replaced before pattern matching is
applied.
- -R abc
- replace characters. Additionally to non-printable characters,
replace all characters found in abc 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.
If svlogd is sent a HUP
signal, it closes and reopens all logs, and updates their configuration
according to log/config.
If svlogd is sent a TERM signal, or if it sees
end-of-file on standard input, it closes standard input, waits for all processor
subprocesses to finish if any, and exits 0 as soon as possible.
If svlogd
is sent an ALRM signal, it tries for all logs to rotate the current log
file, if it is not empty.
runsvstat(8), runit(8), runit-init(8),
runsv(8), runsvstat(8), runsvctrl(8), runsvdir(8), runsvchdir(8), svwaitdown(8),
svwaitup(8)
http://smarden.org/runit/
Gerrit Pape <pape@smarden.org>
Table of Contents