使用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!"); } });