providing option to connect to memcache at general connect time
[OpenSRF.git] / src / jserver / osrf_chat_main.c
index 64ae958..8ac5298 100644 (file)
@@ -1,7 +1,8 @@
 #include "osrf_chat.h"
 #include "opensrf/osrfConfig.h"
 #include <stdio.h>
-#include "opensrf/logging.h"
+#include "opensrf/log.h"
+#include <syslog.h>
 
 
 int main( int argc, char* argv[] ) {
@@ -12,6 +13,10 @@ int main( int argc, char* argv[] ) {
        }
 
        osrfConfig* cfg = osrfConfigInit( argv[1], argv[2] );
+       if( !cfg ) {
+               fprintf( stderr, "Unable to load configuration file %s\n", argv[1] );
+               return -1;
+       }
 
        init_proc_title( argc, argv );
        set_proc_title( "ChopChop" );
@@ -23,7 +28,29 @@ int main( int argc, char* argv[] ) {
        char* listenaddr        = osrfConfigGetValue(cfg, "/listen_address");
        char* llevel            = osrfConfigGetValue(cfg, "/loglevel");
        char* lfile                     = osrfConfigGetValue(cfg, "/logfile");
-
+       char* facility          = osrfConfigGetValue(cfg, "/syslog");
+
+       if(!domain)
+               fputs( "No domain specified in configuration file\n", stderr );
+       
+       if(!secret)
+               fputs( "No secret specified in configuration file\n", stderr );
+       
+       if(!sport)
+               fputs( "No port specified in configuration file\n", stderr );
+       
+       if(!listenaddr)
+               fputs( "No listen_address specified in configuration file\n", stderr );
+       
+       if(!llevel)
+               fputs( "No loglevel specified in configuration file\n", stderr );
+       
+       if(!lfile)
+               fputs( "No logfile specified in configuration file\n", stderr );
+       
+       if(!s2sport)
+               fputs( "No s2sport specified in configuration file\n", stderr );
+       
        if(!(domain && secret && sport && listenaddr && llevel && lfile && s2sport)) {
                fprintf(stderr, "Configuration error for ChopChop - missing key ingredient\n");
                return -1;
@@ -32,7 +59,15 @@ int main( int argc, char* argv[] ) {
        int port = atoi(sport);
        int s2port = atoi(s2sport);
        int level = atoi(llevel);
-       log_init(level, lfile);
+
+       if(!strcmp(lfile, "syslog")) {
+               osrfLogInit( OSRF_LOG_TYPE_SYSLOG, "chopchop", level );
+               osrfLogSetSyslogFacility(osrfLogFacilityToInt(facility));
+
+       } else {
+               osrfLogInit( OSRF_LOG_TYPE_FILE, "chopchop", level );
+               osrfLogSetFile( lfile );
+       }
 
        fprintf(stderr, "Attempting to launch ChopChop with:\n"
                        "domain: %s\nport: %s\nlisten address: %s\nlog level: %s\nlog file: %s\n",
@@ -40,14 +75,15 @@ int main( int argc, char* argv[] ) {
 
        osrfChatServer* server = osrfNewChatServer(domain, secret, s2port);
 
-       if( osrfChatServerConnect( server, port, s2port, listenaddr ) != 0 ) 
-               return fatal_handler("ChopChop unable to bind to port %d on %s", port, listenaddr);
+       if( osrfChatServerConnect( server, port, s2port, listenaddr ) != 0 ) {
+               osrfLogError( OSRF_LOG_MARK, "ChopChop unable to bind to port %d on %s", port, listenaddr);
+               return -1;
+       }
 
        daemonize();
        osrfChatServerWait( server );
 
        osrfChatServerFree( server );
-       log_free();
        osrfConfigFree(cfg);
 
        return 0;