Pipelog allows for rotating or clearing the log of a running process by piping it through an intermediate which responds to external signals. Without such an intermediate, replacing, moving or deleting the log would make it impossible to resume accumulating output because the process would continue to use a filehandle to an old inode; some applications (such as syslogd) implement signal handling themselves so that another utility (such as logrotate) can be used to move their log(s), and then signal the application to re-open — but this is often not the case.
On receipt of SIGUSR1, pipelog will rotate the log file to log file .1, and move any existing .1 to .2, etc, while continuing to buffer input. On receipt of SIGUSR2, it will delete the current log file and open a new one with the same name, effectively clearing the contents. It can also execute an arbitrary process in between opening the new log and beginning to write to it, again while buffering input.
Features
- Written in C using standard POSIX extensions, should work in any unix/linux/BSD environment.