Syslog is a standard for logging program messages. It allows separation of the software that generates messages from the system that stores them.
The traditional use of a syslog daemon is to store events in log files, in a format like this:
Jan 1 12:12:12 10.245.3.99 foo: this is a message from foo
All the log files are in the
/var/log/ directory. You can explore the files
on your own machine an see the log messages for yourself.
Writing your own messages
Now, how can you log something with syslog? There is a command-line utility
suited just for the job —
logger . For instance:
$ logger -t "dude" "What's up New York?"
will add something like
Jul 8 10:45:53 astro-desktop dude: What's up New York? into `/var/log/messages` .
Logger is most useful for bash scripts, but while in C, you'd probably like to use something else. So let's have look at some syscalls. Here is a very simple program, that will do the same as the logger command shown a couple lines back.
/* Example of using syslog. */
openlog("dude", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
syslog(LOG_NOTICE, "What's up %s?", "New York\0");
openlog() will establish a connection to the logging system. As
soon as it's ready, you can start using
syslog() to save messages and in
the end you'll need to close the connection by
closelog(). Fairly simple 🎉.
There are some parameters to the functions which are described in
or somewhere on the interwebz.