+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);
+}
+