我想从 Java 应用程序中“拖尾 -f”很多日志文件。
我已经通过监视大小和上次更新并在文件大小或上次更新时间发生变化时反复打开文件并读取最后几个字节来实现这一点 - 然后立即关闭它。
这似乎有问题,因为当记录器决定重命名文件时我可能会打开它,这会导致某种问题。
我还想检测一个“滚动”文件,其机制比注意到文件大小减小...似乎容易出错但不太可能。
由于我似乎无法访问文件描述符或其他低级文件实用程序,因此我可能无法重现 tail 的行为——但是在不“锁定”文件以进行重命名/删除的情况下读取文件是否有任何技巧( Windows 7的)
我想另一种可能性是实际产生一个 tail -f 进程并读取进程输出,但这似乎有点重——我在这里扫描了 60 个日志文件,其中一些有很多输出(大多数将是空闲的)。