diff --git a/.gitignore b/.gitignore index 6e829d9..50c97b7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ node_modules .project + +examples/*/node_modules +examples/*/*.log diff --git a/examples/advanced/package.json b/examples/advanced/package.json new file mode 100644 index 0000000..64cad47 --- /dev/null +++ b/examples/advanced/package.json @@ -0,0 +1,9 @@ +{ + "name": "redirect", + "version": "1.0.0", + "description": "", + "dependencies": { + "daemonize2": "file:../.." + }, + "license": "MIT" +} diff --git a/examples/redirect/app.js b/examples/redirect/app.js new file mode 100644 index 0000000..5f13df8 --- /dev/null +++ b/examples/redirect/app.js @@ -0,0 +1,16 @@ +var http = require("http"); + +http.createServer(function(req, res) { + console.log("Beginning request."); + + res.writeHead(200, { + "Content-Type": "text/plain" + }); + res.end("Hello World"); + + console.log("Ending request."); +}).listen(8080); + +setInterval(function () { + console.error("A theoretical error!"); +}, 1000); diff --git a/examples/redirect/ctrl.js b/examples/redirect/ctrl.js new file mode 100644 index 0000000..dfeef4d --- /dev/null +++ b/examples/redirect/ctrl.js @@ -0,0 +1,35 @@ +var fs = require('fs'); + +var daemon = require("daemonize2").setup({ + main: "app.js", + name: "sampleapp", + pidfile: "sampleapp.pid" +}); + +var outFile = "sampleapp.out.log"; +var errFile = "sampleapp.err.log"; + +switch (process.argv[2]) { + + case "start": + var outStream = fs.createWriteStream(outFile); + var errStream = fs.createWriteStream(errFile); + + outStream.on('open', function () { + errStream.on('open', function () { + daemon.start(undefined, { + stdout: outStream, + stderr: errStream + }); + }); + }); + + break; + + case "stop": + daemon.stop(); + break; + + default: + console.log("Usage: [start|stop]"); +} diff --git a/examples/redirect/package.json b/examples/redirect/package.json new file mode 100644 index 0000000..64cad47 --- /dev/null +++ b/examples/redirect/package.json @@ -0,0 +1,9 @@ +{ + "name": "redirect", + "version": "1.0.0", + "description": "", + "dependencies": { + "daemonize2": "file:../.." + }, + "license": "MIT" +} diff --git a/examples/simple/package.json b/examples/simple/package.json new file mode 100644 index 0000000..64cad47 --- /dev/null +++ b/examples/simple/package.json @@ -0,0 +1,9 @@ +{ + "name": "redirect", + "version": "1.0.0", + "description": "", + "dependencies": { + "daemonize2": "file:../.." + }, + "license": "MIT" +} diff --git a/lib/daemonize.js b/lib/daemonize.js index 1a56ac4..145974f 100644 --- a/lib/daemonize.js +++ b/lib/daemonize.js @@ -81,7 +81,8 @@ var Daemon = function(options) { }; util.inherits(Daemon, EventEmitter); -Daemon.prototype.start = function(listener) { +Daemon.prototype.start = function(listener, stdio) { + stdio = stdio || {}; // make sure daemon is not running var pid = this._sendSignal(this._getpid()); @@ -116,12 +117,16 @@ Daemon.prototype.start = function(listener) { return this; } + // check if stdout and stderr + var stdout = stdio.stdout || "ignore"; + var stderr = stdio.stderr || "ignore"; + // spawn child process var child = spawn(process.execPath, (this._options.args || []).concat([ __dirname + "/wrapper.js" ]).concat(this._options.argv), { env: process.env, - stdio: ["ignore", "ignore", "ignore", "ipc"], + stdio: ["ignore", stdout, stderr, "ipc"], detached: true } );