Daemonize option and outputting to file
authorDarren <darren@darrenwhitlen.com>
Sun, 28 Oct 2012 03:14:47 +0000 (03:14 +0000)
committerDarren <darren@darrenwhitlen.com>
Sun, 28 Oct 2012 03:14:47 +0000 (03:14 +0000)
config.js [moved from server/config.js with 95% similarity]
kiwi.js [new file with mode: 0644]
package.json
server/configuration.js
server/kiwi.js
server/weblistener.js

similarity index 95%
rename from server/config.js
rename to config.js
index f4b07bfa42432995c7383200f7b10ac90a653065..ed20689dc041ec19cccc72e0bb35a9da882fb9aa 100644 (file)
+++ b/config.js
@@ -5,6 +5,10 @@ conf.user = "";
 conf.group = "";
 
 
+// Log file location
+conf.log = "kiwi.log";
+
+
 // Server listen blocks
 conf.servers = [];
 
diff --git a/kiwi.js b/kiwi.js
new file mode 100644 (file)
index 0000000..751c275
--- /dev/null
+++ b/kiwi.js
@@ -0,0 +1,40 @@
+var kiwi_app = './server/kiwi.js';\r
+\r
+\r
+var daemon = require('daemonize2').setup({\r
+    main: kiwi_app,\r
+    name: 'kiwiirc',\r
+    pidfile: 'kiwiirc.pid'\r
+});\r
+\r
+switch (process.argv[2]) {\r
+    case '-f':\r
+        require(kiwi_app);\r
+        break;\r
+\r
+    case 'start':\r
+        daemon.start();\r
+        break;\r
+\r
+    case 'stop':\r
+        daemon.stop();\r
+        break;\r
+\r
+    case 'restart':\r
+        daemon.stop(function(err) {\r
+            daemon.start();\r
+        });\r
+        break;\r
+\r
+    case 'status':\r
+        var pid = daemon.status();\r
+        if (pid)\r
+            console.log('Daemon running. PID: ' + pid);\r
+        else\r
+            console.log('Daemon is not running.');\r
+        break;\r
+\r
+\r
+    default:\r
+        console.log('Usage: [-f|start|stop|restart|status]');\r
+}
\ No newline at end of file
index e10d160c8f559493b6715766636b091bd14f8965..b5fdaedb3e3aeca0770eb3f00d964f8519137a50 100644 (file)
@@ -5,6 +5,7 @@
     "node-static": "0.5.9",\r
     "uglify-js": "1.2.3",\r
     "socket.io": "0.8.7",\r
-    "underscore": "1.3.3"\r
+    "underscore": "1.3.3",\r
+    "daemonize2": "0.4.0-rc.5"\r
   }\r
 }
\ No newline at end of file
index 99581c0d807d2acd3e9ed3ba23babd6e6985d889..aaf9513757ed294cc2fe0b9078c7da566a71dd77 100644 (file)
@@ -1,9 +1,9 @@
 var fs = require('fs');
 
 var config_filename = 'config.js',
-    config_dirs = ['/etc/kiwiirc/', __dirname + '/'],
+    config_dirs = ['/etc/kiwiirc/', __dirname + '/../'],
     environment = 'production',
-       loaded_config = Object.create(null);
+    loaded_config = Object.create(null);
 
 
 function loadConfig() {
@@ -21,7 +21,6 @@ function loadConfig() {
 
                 // Try load the new config file
                 new_config = require(conf_filepath);
-                console.log('Loaded config file ' + config_dirs[i] + config_filename);
                 break;
             }
         } catch (e) {
@@ -37,24 +36,24 @@ function loadConfig() {
     }
 
     if (new_config) {
-       loaded_config = new_config;
-       return loaded_config;
+        loaded_config = new_config;
+        return loaded_config;
     } else {
-       return false;
+        return false;
     }
 }
 
 
 
 module.exports.setEnvironment = function (new_environment) {
-       environment = new_environment;
+    environment = new_environment;
 };
 
 // Get the current config. Optionally for a different environment than currently set
 module.exports.get = function (specific_environment) {
-       specific_environment = specific_environment || environment;
-       
-       return loaded_config[specific_environment];
+    specific_environment = specific_environment || environment;
+    
+    return loaded_config[specific_environment];
 };
 
 module.exports.loadConfig = loadConfig;
\ No newline at end of file
index 97849302b23ac23c12a49bd7cfb30af480a81889..7db9138077dc449a92c20cf0e2e1060002370973 100755 (executable)
@@ -6,9 +6,40 @@ var fs          = require('fs'),
 
 
 
+process.chdir(__dirname + '/../');
+config.loadConfig();
+
+
+// If we're not running in the forground and we have a log file.. switch
+// console.log to output to a file
+if (process.argv.indexOf('-f') === -1 && config.get().log) {
+    (function () {
+        var log_file_name = config.get().log;
+
+        if (log_file_name[0] !== '/') {
+            log_file_name = __dirname + '/../' + log_file_name;
+        }
+
+
+
+        console.log = function() {
+            var logfile = fs.openSync(log_file_name, 'a'),
+                out;
+
+            out = Array.prototype.join.apply(arguments, [' ']);
+
+            // Make sure we out somthing to log and we have an open file
+            if (!out || !logfile) return;
+
+            out += '\n';
+            fs.writeSync(logfile, out, null);
+
+            fs.closeSync(logfile);
+        };
+    })();
+}
 
 
-config.loadConfig();
 
 // Make sure we have a valid config file and at least 1 server
 if (Object.keys(config.get()).length === 0) {
index 33e93ba8c755400d56d15d5db5306cb0c3d9062d..abde51f9cf1f08a942bc387f7f7c36a3d01a3388 100644 (file)
@@ -64,7 +64,8 @@ var WebListener = function (web_config, transports) {
         console.log('Listening on ' + web_config.address + ':' + web_config.port.toString() + ' without SSL');
     }
     
-    this.ws.set('log level', 1);
+    this.ws.set('log level', 0);
+    this.ws.set('log color', false);
     this.ws.enable('browser client minification');
     this.ws.enable('browser client etag');
     this.ws.set('transports', transports);