我正在尝试使用 node.js 观看日志旋转文件并解析每一行的关键字。问题是:在 logrotate 之后,由于打开的文件描述符,我仍在观看旧文件。
我是新手,有两个问题:
- 是否建议在每行之后检查 inode,如果不一样,请关闭 fd 并再次读取文件“文件名”?
- 实现这一目标的最佳方法是什么?试图避免回调并改用事件,还是已经有一个库?
谢谢!
我正在尝试使用 node.js 观看日志旋转文件并解析每一行的关键字。问题是:在 logrotate 之后,由于打开的文件描述符,我仍在观看旧文件。
我是新手,有两个问题:
谢谢!
当日志文件被轮换时,它正在被重命名。
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.
}
});