From 8ccd96947c30f401410182f29e7a9cd19224380c Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Sat, 19 Dec 2015 22:56:46 +0300 Subject: [PATCH] error logging via syslog --- linux/dbstore.c | 9 +++++---- linux/pulsecounter.c | 23 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/linux/dbstore.c b/linux/dbstore.c index b39235b..1a85dba 100644 --- a/linux/dbstore.c +++ b/linux/dbstore.c @@ -4,6 +4,8 @@ #include #include +#include + #include #include "dbstore.h" @@ -74,8 +76,7 @@ int dbstore(uint8_t which, uint32_t val) (void)strftime(tstr, sizeof(tstr), "%Y-%m-%d %H:%M:%S", &tm); mysql_init(&mysql); if(!mysql_real_connect(&mysql, host, user, pass, dbnm, 0, NULL, 0)) { - fprintf(stderr, "mysql connect error: %s\n", - mysql_error(&mysql)); + g_warning("mysql connect error: %s\n", mysql_error(&mysql)); return 1; } snprintf(statement, sizeof(statement), @@ -83,8 +84,8 @@ int dbstore(uint8_t which, uint32_t val) table, tstr, val); rc = mysql_query(&mysql, statement); if (rc) - fprintf(stderr, "mysql insert \"%s\" error: %s\n", - statement, mysql_error(&mysql)); + g_warning("mysql insert \"%s\" error: %s\n", + statement, mysql_error(&mysql)); mysql_close(&mysql); return rc; } diff --git a/linux/pulsecounter.c b/linux/pulsecounter.c index 5f629f1..77c77bb 100644 --- a/linux/pulsecounter.c +++ b/linux/pulsecounter.c @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -53,6 +54,26 @@ static GOptionEntry options[] = { { NULL }, }; +void local_log_handler(const gchar *log_domain, GLogLevelFlags log_level, + const gchar *message, gpointer log_context) +{ + int syslog_level; + + switch (log_level) { + case G_LOG_LEVEL_CRITICAL: syslog_level = LOG_CRIT; break; + case G_LOG_LEVEL_ERROR: syslog_level = LOG_ERR; break; + case G_LOG_LEVEL_WARNING: syslog_level = LOG_WARNING; break; + case G_LOG_LEVEL_MESSAGE: syslog_level = LOG_NOTICE; break; + case G_LOG_LEVEL_INFO: syslog_level = LOG_INFO; break; + case G_LOG_LEVEL_DEBUG: syslog_level = LOG_DEBUG; break; + default: syslog_level = LOG_INFO; + } + if (!log_domain || (log_domain[0] == '\0')) + syslog(syslog_level, "%s", message); + else + syslog(syslog_level, "%s: %s", log_domain, message); +} + static gboolean channel_watcher(GIOChannel *chan, GIOCondition cond, gpointer user_data) { @@ -132,7 +153,7 @@ int main(int argc, char *argv[]) gboolean got_error = FALSE; g_log_set_handler(NULL, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL - | G_LOG_FLAG_RECURSION, g_log_default_handler, NULL); + | G_LOG_FLAG_RECURSION, local_log_handler, NULL); opt_dst_type = g_strdup("public"); opt_sec_level = g_strdup("low"); opt_dbconffile = g_strdup("/etc/pulsecounter.db"); -- 2.39.2