Skip to content

Commit

Permalink
[fix] Logging now survives child process restarts.
Browse files Browse the repository at this point in the history
  • Loading branch information
AvianFlu committed Mar 6, 2012
1 parent 2d7d462 commit 89f3614
Showing 1 changed file with 34 additions and 19 deletions.
53 changes: 34 additions & 19 deletions lib/forever/plugins/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,44 @@ exports.attach = function (options) {
options = options || {};
var monitor = this;

monitor.on('start', function startLogs(child, childData) {

if (options.outFile) {
monitor.stdout = options.stdout || fs.createWriteStream(options.outFile, {
flags: monitor.append ? 'a+' : 'w+',
encoding: 'utf8',
mode: 0644
});
}

if (options.errFile) {
monitor.stderr = options.stderr || fs.createWriteStream(options.errFile, {
flags: monitor.append ? 'a+' : 'w+',
encoding: 'utf8',
mode: 0644
});
}

monitor.on('start', startLogs);

monitor.on('restart', startLogs);

monitor.on('exit', function () {
monitor.stdout.end();
monitor.stderr.end();
});

function startLogs(child, childData) {
if (monitor.child && !monitor.silent) {
monitor.child.stdout.pipe(process.stdout);
monitor.child.stderr.pipe(process.stderr);
if (monitor.outFile) {
monitor.stdout = fs.createWriteStream(monitor.outFile, {
flags: monitor.append ? 'a+' : 'w+',
encoding: 'utf8',
mode: 0644
});
monitor.child.stdout.pipe(monitor.stdout);
monitor.child.stdout.pipe(process.stdout, { end: false });
monitor.child.stderr.pipe(process.stderr, { end: false });
if (monitor.stdout) {
monitor.child.stdout.pipe(monitor.stdout, { end: false });
}
if (monitor.errFile) {
monitor.stderr = fs.createWriteStream(monitor.errFile, {
flags: monitor.append ? 'a+' : 'w+',
encoding: 'utf8',
mode: 0644
});
monitor.child.stderr.pipe(monitor.stderr);
if (monitor.stderr) {
monitor.child.stderr.pipe(monitor.stderr, { end: false });
}
}
});

}
};


0 comments on commit 89f3614

Please sign in to comment.