How to Configure Remote Syslog Logging
General Information
syslogd is the Linux system logging utility that take manages files in the /var/log directory.
On a typical desktop system, logging produced by local application and is saved to files on the local drive. But syslog can also be configured to receive logging from a remote client, or to send logging information to a remote syslog server.
This How to gives the basic procedure for configuring a remote syslog server (e.g. your Ubuntu desktop PC) and a client (e.g. your target hardware running a RidgeRun SDK produced file system).
Configuring host PC syslogd server
The changes on this side are minimal. Basically you have to tell syslogd to listen for remote messages. To enable your host computer's syslogd server to accept log data from a remote client, you need to edit the file /etc/default/syslogd and set
SYSLOGD="-r"
Save the file and restart syslogd by doing:
sudo /etc/init.d/syslogd restart
You host syslogd server will now accept remove log messages.
Configuring BusyBox syslogd to send messages to remote logging service
Manual steps to verify functionality
On your target hardware verify syslogd is not running
target# killall -9 syslogd
Manually start syslogd enabling remote logging
REMOTE_LOGGING_SERIVCE=10.111.0.3 PORT=514 /sbin/syslogd -R $REMOTE_LOGGING_SERIVCE:$PORT -L -O /var/log/messages
Automatically starting remote logging
You can configure your system to automatically start the remote logging service be editing the file $DEVDIR/fs/overlay/etc/init.d/syslogd and adding
REMOTE_LOGGING_SERIVCE=10.111.0.3 PORT=514 /sbin/syslogd -R $REMOTE_LOGGING_SERIVCE:$PORT -L -O /var/log/messages
Verifying proper operation
A simple way to add a log message every few seconds is using the Busybox logger utility. You man need to reconfigure your SDK to enable the building of the Busybox logger utility.
On the target, start a simple script that add a message to the log every two seconds.
( while sleep 2 ; do date ; done | logger -t "DATE:" ) &
Logging on target hardware
If you used the -L option with syslogd on the target hardware, then you can verify local logging is occurring as expected.
tail -f /var/log/messages
Logging on host PC
To check the messages are been sent to the server:
tail -f /var/log/messages
Debugging
If remote logging is not working, use wireshark to watch the network traffic to verify that the target hardware is sending the msesages to the host computer.