如何在node.js中执行`tail -f logfile.txt`之类的处理?

mik*_*ike 36 node.js

tail -f logfile.txt 输出最后10行logfile.txt,然后在文件增长时继续输出附加数据.

-f在node.js 中执行该部分的推荐方法是什么?

以下输出整个文件(忽略"显示最后10行")然后退出.

var fs = require('fs');
var rs = fs.createReadStream('logfile.txt', { flags: 'r', encoding: 'utf8'});
rs.on('data', function(data) {
  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

我知道事件循环正在退出,因为在流结束和关闭事件之后没有更多事件 - 我很好奇继续监视流的最佳方式.

Roh*_*ngh 43

这样做的规范方法是fs.watchFile.

或者,您可以使用node-tail模块,该模块在fs.watchFile内部使用并且已经为您完成了工作.以下是直接从文档中使用它的示例:

Tail = require('tail').Tail;

tail = new Tail("fileToTail");

tail.on("line", function(data) {
  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)


Tac*_*kle 7

node.js有关fs.watchFile状态的APi文档:

稳定性:2 - 不稳定.如果可用,请改用fs.watch.

虽然搞怪,它说,几乎在同样的事情fs.watch:

稳定性:2 - 不稳定.并非适用于所有平台.

无论如何,我继续做了另一个小型网络应用程序TailGate,它将使用fs.watch变体来拖尾文件.

欢迎在这里查看: Gailub上的TailGate.