从无尽的流中逐行读取node.js.

时间:2013-06-06 16:26:25

标签: node.js stdout

我有一个无尽的命令行流 - 即来自我的heroku应用程序的日志 - 并且想要按行解析到node.js。

我尝试过各种方法,比如readline界面(什么都不做):

var command = 'heroku logs --app myapp --tail';

var heroku    = Npm.require('child_process').exec(command);
var readline = Npm.require('readline');

var rl = readline.createInterface({
    input: heroku.stdin,
    output: process.stdout
});

rl.on('line', function(log) {
    console.log(log);
});

或者只使用原始exec,它会返回一个初始缓冲区,但不会从进程中连续读取:

var command = 'heroku logs --app myapp --tail';

var heroku    = Npm.require('child_process').exec(command);

heroku.stdout.setEncoding('utf8');

heroku.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

我没有让它与spawn一起工作 - 即使我认为它可能是正确的。

什么是更好的方法(我正在使用流星,因此增加了Npm)。

0 个答案:

没有答案