Recipe 9.34 Writing Log Entries via C

9.34.1 Problem

You want to add information to the system log from a C program.

9.34.2 Solution

Use the system library functions openlog , syslog, and closelog (see The syslog API):

 syslog-demo.c: #define _GNU_SOURCE     /* for basename( ) in <string.h> */ #include <syslog.h> #include <string.h> int count = 0; char *host = "some-machine "; int main(int argc, char *argv[]) {         openlog(basename(argv[0]), LOG_PID, LOG_LOCAL3);         syslog(LOG_WARNING, "%d connection attempts from %s", count, host);         syslog(LOG_AUTHPRIV|LOG_ERR, "intruder alert!");         syslog(LOG_ERR, "can't open configuration file: %m");         closelog( );         return(0); }

9.34.3 Discussion

Like Perl scripts [Recipe 9.33], C programs can pass the %m format specifier to syslog to include system error messages, corresponding to strerror(errno). Be sure to use %m only when a system error has occurred, to avoid misleading messages.

9.34.4 See Also

syslog(3).



Linux Security Cookbook
Linux Security Cookbook
ISBN: 0596003919
EAN: 2147483647
Year: 2006
Pages: 247

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net