Configuring centralized logging from text log files in Unix with remote_syslog2

Use remote_syslog2 to aggregate logs from any text file, like app log files, in Unix and BSD.

Why remote_syslog2

Papertrail reads log messages from applications and server daemons which do not support - or even know about - syslog.

To send log files from those applications to Papertrail, run Papertrail’s tiny standalone remote_syslog2 daemon. It tracks one or more log files and sends new entries to Papertrail in realtime.

remote_syslog2 works for any text log files, has no impact to the daemon or its logging configuration, and is easy to setup. It forwards logs directly to Papertrail, without relying on the system syslog daemon. No adjustments to syslog.conf, rsyslog.conf, or syslog-ng.conf are required.

Note: Some apps, such as MySQL, Apache, and Tomcat (log4j), have internal support for logging directly to syslog. For apps like these, you may use its internal syslog support or use remote_syslog2 as described below.


Automated (Configuration Management)

remote_syslog2 can be deployed and configured with configuration management tools. Papertrail provides official support for Chef, Puppet, and Salt:

These configuration management modules only configure and deploy remote_syslog2. To configure and manage the system’s syslog daemon configuration, see Configuring remote syslog from Unix/Linux and BSD/OS X


1. Install remote_syslog2

Download the current release. To extract it and copy the binary into a system path, run:

$ tar xzf ./remote_syslog*.tar.gz
$ cd remote_syslog
$ sudo cp ./remote_syslog /usr/local/bin

RPM and Debian packages also available.

2. Configure

Paths to log file(s) can be specified on the command-line, or save log_files.yml.example as /etc/log_files.yml. Edit it to define:

3. Start

Start the daemon:

$ sudo remote_syslog

Logs should appear in Papertrail within a few seconds of being written to the on-disk log file. Problem? See Troubleshooting.

remote_syslog requires read permission on the log files it is monitoring.

4. Auto-start

remote_syslog2 can be automated to start at boot using init scripts (examples) or your preferred daemon invocation method, such as monit or god. See remote_syslog --help or the full README on GitHub.


Note: remote_syslog2 is daemonized as remote_syslog. When you’re looking for the process, look for remote_syslog (not remote_syslog2).


The system rebooted and remote_syslog didn’t start

Install an init file.

Logs not appearing?

First, please feel free to drop a mail into, either instead of following these instructions or while trying them. We enjoy helping, and these steps are only here if they let you save time by troubleshooting independently.

Second, there’s a few reasons remote_syslog might not be sending logs. In order:

If remote_syslog isn’t already running as root, try running it as root to test (such as with sudo), or specify an alternate location for the PID file (such as with remote_syslog --pid-file=/tmp/

The next step is to see what remote_syslog is actually doing. Typically that’s with strace, such as:

strace -tt -s 500 -fp 12345

.. where 12345 is the process ID of remote_syslog, obtained from the second column of ps auxww. This will output every call that it makes. We suggest sending the strace output to a file:

strace -tt -s 500 -fp 12345 -o strace.log

Feel free to send the strace.log file to us via We’ll look for a few things. Did the OS notify remote_syslog of writes to the log files? Did remote_syslog call sendto() (UDP) or connect() and send() (TCP) to try sending the message? What happened?


See other options with:

remote_syslog --help

See also Troubleshooting reachability


Can we help? Just ask.