Program messages are logged to syslog
[cascardo/rnetproxy.git] / log.c
1 #include <glib.h>
2 #include <syslog.h>
3
4 static int map_level (GLogLevelFlags level)
5 {
6   if (level & G_LOG_LEVEL_ERROR)
7     return LOG_CRIT;
8   if (level & G_LOG_LEVEL_CRITICAL)
9     return LOG_ERR;
10   if (level & G_LOG_LEVEL_WARNING)
11     return LOG_WARNING;
12   if (level & G_LOG_LEVEL_MESSAGE)
13     return LOG_NOTICE;
14   if (level & G_LOG_LEVEL_INFO)
15     return LOG_INFO;
16   if (level & G_LOG_LEVEL_DEBUG)
17     return LOG_DEBUG;
18 }
19
20 static void log_func (const gchar* domain,
21                       GLogLevelFlags level,
22                       const gchar* message,
23                       gpointer data)
24 {
25   syslog (map_level (level), "%s", message);
26 }
27
28 void im_log_init ()
29 {
30   openlog ("improxy", LOG_NDELAY | LOG_NOWAIT, LOG_DAEMON);
31   g_log_set_handler (NULL, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
32                      | G_LOG_FLAG_RECURSION, log_func, NULL);
33 }