Remove wheel submodule - will re-add later with new URL
[dmon:dmon.git] / drlog.rst
1 =======
2  drlog
3 =======
4
5 ----------------------------------------------------------
6 Read lines from stdin and append them to auto-rotated logs
7 ----------------------------------------------------------
8
9 :Author: Adrian Perez <aperez@igalia.com>
10 :Manual section: 8
11
12 SYNOPSIS
13 ========
14
15 ``drlog [options] directory``
16
17
18 DESCRIPTION
19 ===========
20
21 ``drlog`` will read its standard input, distributing it as output in a set
22 of named ``log-YYYY-mm-dd-HH:MM:SS`` and a ``current`` file. Output is always
23 appended to ``current``, but when user-defined maximum file size (``-s``) or
24 file usage time (``-t``) it will be renamed with a timestamp in its file name,
25 a new ``current`` file will be opened and, if there are stored more than
26 a number of timestamped files (``-m``) old ones will be deleted.
27
28 The names of the files are designed to make them appear time-ordered in
29 output from commands like `ls(1)`. Also, the ``current`` file will appear at
30 the top of file listings.
31
32 If ``drlog`` receives a *TERM* signal, it will read and process data until
33 the next newline and then exit, leaving *stdin* at the first byte of data it
34 has not yet precessed.
35
36 Upon a ``HUP`` signal, ``drlog`` will close and re-open the ``current``
37 log file, just in case you want rotate logs using an external tool, though
38 using it that way is unsupported.
39
40
41 USAGE
42 =====
43
44 Command line options:
45
46 -m NUMBER, --max-files NUMBER
47             Maximum amount of maintained log files. When ``drlog`` sees
48             more than *NUMBER* log files in the log *directory* it will
49             remove the oldest log file.
50
51 -T TIME, --max-time TIME
52             Maximum number of time to use a log file. Once ``drlog`` spends
53             more than *TIME* using a log file it will start writing to a new
54             one. Suffixes *m* (minutes), *h* (hours), *d* (days), *w* (weeks),
55             *M* (months) and *y* (years) may be used after the number. If no
56             suffix is given, it is assummed that *TIME* is in seconds.
57
58 -s SIZE, --max-size SIZE
59             Maximum size of each log file. When a log file grows over
60             *SIZE* then ``drlog`` will rotate logs and open a new one.
61             Suffixes *k* (kilobytes), *m* (megabytes) and *g* (gigabytes)
62             may be used after the number. If no suffix is given, it is
63             assumed that ``SIZE`` is in bytes.
64
65 -b, --buffered
66             Buffered operation. If enabled, calls to `fsync(2)` will be
67             avoided. This improves performance, but may cause messages to
68             be lost.
69
70 -t, --timestamp
71             Prepend a timestamp to each line. The timestamp format
72             is ``YYYY-mm-dd/HH:MM:SS``, following that of rotated log files.
73             It is easy to parse and sort. And human-readable, too.
74
75
76 SEE ALSO
77 ========
78
79 `multilog(8)`, `supervise(8)`, `svc(8)`, `dslog(8)`, `dlog(8)`, `dmon(8)`
80