我在node.js中使用了一个子进程,如下所示。我不想将输出重定向到控制台,而是将输出放在运行此命令的机器上的某个日志文件中(并且应该可以同时适用于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);
});
发布于 2013-04-26 15:59:36
最好的答案在评论中,在前面的问题中也提到了: 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!");
}
});
发布于 2013-04-23 05:17:42
下面是一个使用streams记录文件的示例。
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);
});
发布于 2013-11-07 21:58:51
如果您使用forever
运行JS脚本,那么您可以选择将日志文件定义为处理所有console.log消息的参数。更不用说让你的nodejs应用永久存活的好处了。
或者尝试这样做:
sudo forever start myapp.js 2>&1 /home/someuser/myapp/myapp.log
https://stackoverflow.com/questions/16155932
复制相似问题