我目前正在尝试使用Chokidar&amp ;;在node.js中创建一个实时日志监控工具。 socket.io。但是,我不太清楚如何在文件更改时有效地重新加载内容。 Chokidar监视文件更改并触发一个事件,其中我必须获取更改内容的唯一选项是再次读取整个文件并再次使用该内容填充视图。这确实减慢了整个过程并提高了CPU利用率。
var watcher = chokidar.watch('file, dir, or glob', {
ignored: /[\/\\]\./, persistent: true
});
watcher.on('change', function(path, stats) {
if (stats) console.log('File', path, 'changed size to', stats.size);
});
在我的情况下,日志大小太大,并且有大量更新。我该如何解决这个问题?有没有办法只获取更改的内容而不是重新加载整个文件以获取更改的内容?
答案 0 :(得分:0)
chokidar似乎没有提供任何功能来告诉你文件中的更改(它提供了文件名和文件统计信息)。
因此,如果您想知道更改了什么,那么您需要维护某种先前的文件卷影副本,以便您可以分析新文件与之前的副本以查看更改的内容。如果您要为整个文件系统执行此操作(需要双重存储),这显然是一项存储密集型任务,但如果您只是为一小组文件执行此操作,那么当然可以进行管理。