s6-linux-utils: the s6-logwatch program
Keywords: s6-linux-utils linux utilities log s6-log logwatch

s6-linux-utils
Software
skarnet.org

# The `s6-logwatch` program

`s6-logwatch` watches the `current` file of a logdir, printing it in real time.

## Interface

         s6-logwatch [ -m buflen ] logdir

- s6-logwatch prints logdir`/current` and watches the file.
- logdir must be managed by a s6-log instance.
- When new logs are appended to the `current` file, s6-logwatch prints them in real-time to stdout.
- When a rotation happens, s6-logwatch notices, and keeps watching the new `current` file.
- s6-logwatch runs forever until killed.

## Options

- `-m` buflen : accumulate at most buflen bytes into the stdout buffer before flushing it. By default, buflen is 4000.

## Bugs

- s6-logwatch is not entirely reliable because there is an unavoidable race condition when a rotation occurs; it's a hack for humans to keep reading logs across rotations, not a tool to be used in safe programming. When the race condition is triggered, s6-logwatch will be unable to understand what state logdir is in and will exit 101 with an error message.
- Specific support in the logger program would be needed to avoid this race condition; it would significantly bloat the logger program, so it has not been deemed useful.

## Notes

- s6-logwatch is Linux-specific because it uses the inotify interface.