4

我正在尝试使用 node.js 观看日志旋转文件并解析每一行的关键字。问题是:在 logrotate 之后,由于打开的文件描述符,我仍在观看旧文件。

我是新手,有两个问题:

  1. 是否建议在每行之后检查 inode,如果不一样,请关闭 fd 并再次读取文件“文件名”?
  2. 实现这一目标的最佳方法是什么?试图避免回调并改用事件,还是已经有一个库?

谢谢!

4

1 回答 1

5

当日志文件被轮换时,它正在被重命名。

node.js 中的 fs.watch 函数能够在文件更改时通知您。

http://www.nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener

Try something like:

fs.watch('filetowatch', function (event) {
  if (event === 'rename') {
    // close the file descriptor you are reading from and re-open.
  }
});
于 2013-12-13T13:19:12.993 回答