使用node.js将输出redirect到日志文件

我在node.js中使用了一个subprocess,如下所示。 而不是将输出redirect到控制台,我想将输出放在运行的机器上的某个日志文件中(并且应该适用于Windows和Mac)。

下面的代码是我正在使用的,我想输出到日志文件的文件。 这里需要做什么修改? 谢谢!

我的代码:

var spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']); ls.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ls.stderr.on('data', function (data) { console.log('stderr: ' + data); }); ls.on('close', function (code) { console.log('child process exited with code ' + code); }); 

以下是使用streamlogging到文件的示例。

 var logStream = fs.createWriteStream('./logFile.log', {flags: 'a'}); var spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']); ls.stdout.pipe(logStream); ls.stderr.pipe(logStream); ls.on('close', function (code) { console.log('child process exited with code ' + code); }); 

如果你forever运行你的JS脚本,那么你可以select定义一个日志文件作为参数来处理所有的console.log消息。 更不用说保持你的nodejs应用永久生存的好处了。

或者试试这个:

 sudo forever start myapp.js 2>&1 /home/someuser/myapp/myapp.log 

永远使用下面的选项

永远启动-o out.log -e err.log server.js

最好的答案是在评论中,并在此前的问题中提到:stackoverflow.com/questions/2496710/nodejs-write-to-file

具体如下:

 var fs = require('fs'); fs.writeFile("/tmp/test", "Hey there!", function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } });