Redirecting output to a log file using node.js
我在node.js中使用了如下子进程。我不想将输出重定向到控制台,而是将输出放在运行此操作的计算机上的某个位置的日志文件中(应该对Windows和Mac都有效)。
下面的代码是我正在使用的代码,我希望将这些文件输出到日志文件中。在这里需要做什么改变?谢谢!
我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); }); |
下面是一个使用流记录到文件的示例。
1 2 3 4 5 6 7 8 9 10 11 | 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); }); |
如果使用
或者试试这个:
1 | 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
具体如下:
1 2 3 4 5 6 7 8 | var fs = require('fs'); fs.writeFile("/tmp/test","Hey there!", function(err) { if(err) { console.log(err); } else { console.log("The file was saved!"); } }); |