From 8feb6ebdc5e07e47f60c3ebee79df65f8f0c2c85 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Tue, 12 Sep 2006 21:39:40 +0000 Subject: [PATCH] Program messages are logged to syslog Program messages are sent to syslog with LOG_DAEMON facility. They are generated using GLib log support with a custom handler. --- improxy.c | 2 ++ log.c | 33 +++++++++++++++++++++++++++++++++ log.h | 6 ++++++ 3 files changed, 41 insertions(+) create mode 100644 log.c create mode 100644 log.h diff --git a/improxy.c b/improxy.c index 6e15f1e..987ecb0 100644 --- a/improxy.c +++ b/improxy.c @@ -1,6 +1,7 @@ #include #include #include +#include "log.h" void client_event (GConn* conn, GConnEvent* event, gpointer data) { @@ -56,6 +57,7 @@ int main () gint port; gnet_init (); + im_log_init (); keyfile = g_key_file_new (); diff --git a/log.c b/log.c new file mode 100644 index 0000000..58128c7 --- /dev/null +++ b/log.c @@ -0,0 +1,33 @@ +#include +#include + +static int map_level (GLogLevelFlags level) +{ + if (level & G_LOG_LEVEL_ERROR) + return LOG_CRIT; + if (level & G_LOG_LEVEL_CRITICAL) + return LOG_ERR; + if (level & G_LOG_LEVEL_WARNING) + return LOG_WARNING; + if (level & G_LOG_LEVEL_MESSAGE) + return LOG_NOTICE; + if (level & G_LOG_LEVEL_INFO) + return LOG_INFO; + if (level & G_LOG_LEVEL_DEBUG) + return LOG_DEBUG; +} + +static void log_func (const gchar* domain, + GLogLevelFlags level, + const gchar* message, + gpointer data) +{ + syslog (map_level (level), "%s", message); +} + +void im_log_init () +{ + openlog ("improxy", LOG_NDELAY | LOG_NOWAIT, LOG_DAEMON); + g_log_set_handler (NULL, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL + | G_LOG_FLAG_RECURSION, log_func, NULL); +} diff --git a/log.h b/log.h new file mode 100644 index 0000000..d9e5992 --- /dev/null +++ b/log.h @@ -0,0 +1,6 @@ +#ifndef LOG_H +#define LOG_H + +void im_log_init (); + +#endif -- 2.20.1