From a4b8645a6015ff565dd3986441e9fa8ca1b0f89e Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sat, 5 Apr 2014 09:38:59 -0400 Subject: [PATCH] logging: use GLib's logging functions if not using syslog If nm_logging_syslog_openlog() isn't called (ie, in the test programs), then route nm_log() messages to g_log() rather than just using fprintf(). --- src/logging/nm-logging.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c index a7cd19101e..71322bac81 100644 --- a/src/logging/nm-logging.c +++ b/src/logging/nm-logging.c @@ -57,6 +57,7 @@ nm_log_handler (const gchar *log_domain, static guint32 log_level = LOGL_INFO; static char *log_domains; static guint64 logging[LOGL_MAX]; +static gboolean logging_set_up; static gboolean syslog_opened; typedef struct { @@ -163,6 +164,8 @@ nm_logging_setup (const char *level, char **tmp, **iter; int i; + logging_set_up = TRUE; + for (i = 0; i < LOGL_MAX; i++) new_logging[i] = 0; @@ -368,9 +371,13 @@ _nm_log (const char *loc, char *fullmsg = NULL; GTimeVal tv; int syslog_level = LOG_INFO; + int g_log_level = G_LOG_LEVEL_INFO; g_return_if_fail (level < LOGL_MAX); + if (G_UNLIKELY (!logging_set_up)) + nm_logging_setup ("INFO", "DEFAULT", NULL, NULL); + if (!(logging[level] & domain)) return; @@ -382,18 +389,23 @@ _nm_log (const char *loc, case LOGL_DEBUG: g_get_current_time (&tv); syslog_level = LOG_INFO; + g_log_level = G_LOG_LEVEL_DEBUG; fullmsg = g_strdup_printf (" [%ld.%06ld] [%s] %s(): %s", tv.tv_sec, tv.tv_usec, loc, func, msg); break; case LOGL_INFO: syslog_level = LOG_INFO; + g_log_level = G_LOG_LEVEL_MESSAGE; fullmsg = g_strconcat (" ", msg, NULL); break; case LOGL_WARN: syslog_level = LOG_WARNING; + g_log_level = G_LOG_LEVEL_WARNING; fullmsg = g_strconcat (" ", msg, NULL); break; case LOGL_ERR: syslog_level = LOG_ERR; + /* g_log_level is still WARNING, because ERROR is fatal */ + g_log_level = G_LOG_LEVEL_WARNING; g_get_current_time (&tv); fullmsg = g_strdup_printf (" [%ld.%06ld] [%s] %s(): %s", tv.tv_sec, tv.tv_usec, loc, func, msg); break; @@ -403,14 +415,8 @@ _nm_log (const char *loc, if (syslog_opened) syslog (syslog_level, "%s", fullmsg); - else { - FILE *log_target; - if (level == LOGL_WARN || level == LOGL_ERR) - log_target = stderr; - else - log_target = stdout; - fprintf (log_target, "%s\n", fullmsg); - } + else + g_log (G_LOG_DOMAIN, g_log_level, "%s", fullmsg); g_free (msg); g_free (fullmsg);