diff -ur d1/nbd-2.9.12/nbd-server.c d2/nbd-2.9.12/nbd-server.c
--- d1/nbd-2.9.12/nbd-server.c	2009-04-30 08:49:38.000000000 -0400
+++ d2/nbd-2.9.12/nbd-server.c	2009-05-18 10:35:39.000000000 -0400
@@ -1647,6 +1647,35 @@
 	}
 }
 
+#ifndef ISSERVER
+void glib_message_syslog_redirect(const gchar *log_domain,
+                                  GLogLevelFlags log_level,
+                                  const gchar *message,
+                                  gpointer user_data)
+{
+    int level=LOG_DEBUG;
+    
+    switch( log_level )
+    {
+      case G_LOG_FLAG_FATAL:
+      case G_LOG_LEVEL_CRITICAL:
+      case G_LOG_LEVEL_ERROR:    
+        level=LOG_ERR; 
+        break;
+      case G_LOG_LEVEL_WARNING:
+        level=LOG_WARNING;
+        break;
+      case G_LOG_LEVEL_MESSAGE:
+      case G_LOG_LEVEL_INFO:
+        level=LOG_INFO;
+        break;
+      case G_LOG_LEVEL_DEBUG:
+        level=LOG_DEBUG;
+    }
+    syslog(level, message);
+}
+#endif
+
 /**
  * Main entry point...
  **/
@@ -1666,10 +1695,7 @@
 	config_file_pos = g_strdup(CFILE);
 	serve=cmdline(argc, argv);
 	servers = parse_cfile(config_file_pos, &err);
-	if(!servers || !servers->len) {
-		g_warning("Could not parse config file: %s", 
-				err ? err->message : "Unknown error");
-	}
+	
 	if(serve) {
 		g_array_append_val(servers, *serve);
      
@@ -1684,6 +1710,7 @@
 			close(2);
 			open("/dev/null", O_WRONLY);
 			open("/dev/null", O_WRONLY);
+			g_log_set_default_handler( glib_message_syslog_redirect, NULL );
 #endif
 			client=g_malloc(sizeof(CLIENT));
 			client->server=serve;
@@ -1694,6 +1721,12 @@
 			return 0;
 		}
 	}
+    
+    if(!servers || !servers->len) {
+		g_warning("Could not parse config file: %s", 
+				err ? err->message : "Unknown error");
+	}
+    
 	if((!serve) && (!servers||!servers->len)) {
 		g_message("Nothing to do! Bye!");
 		exit(EXIT_FAILURE);
