我在node.js
工作。
Note: Log - directoryName(Contains log files)
必须听取log directory
更改。如果任何日志文件添加到日志目录,我必须阅读特定添加的日志文件。
如果有任何内容附加到现有文件。必须阅读特定的更改而不是整个文件。
我正在使用chokidar来查看目录。
var chokidar = require('chokidar');
var watcher = chokidar.watch('../log', {ignored: /[\/\\]\./, persistent: true});
watcher.on("add", function(path){
new lazy(fs.createReadStream(path)).lines.forEach(function(line) {
console.log(line.toString());
});
}).on("change", function(path){
//Reading from first line
new lazy(fs.createReadStream(path)).lines.forEach(function(line) {
console.log(line.toString());
});
});
以上代码基于目录更改和文件添加工作。问题在于阅读文件。如果某些文件更改,我想只读取特定的更改而不是从开头。
是否有任何节点模块只读取文件中的附加内容?
任何建议都将不胜感激。
答案 0 :(得分:1)
您应该使用node-tail或查看其执行方式:https://github.com/lucagrulla/node-tail
首先,它将使用fs.statSync记录文件的大小,然后在每次更改时,它都会获得新的大小。然后它开始从先前记录的结尾(文件的大小)读取文件,直到新的大小。
fs.createReadStream支持start
和end
个选项来阅读文件。