Javaアプリ内から多くのログファイルを「Tail-f」したいと思います。
サイズと最終更新を監視し、ファイルを繰り返し開いて、ファイルサイズまたは最終更新時刻が変更されるたびに最後の数バイトを読み取り、すぐに閉じることで、これを機能させることができました。
ロガーがファイルの名前を変更することを決定したときにファイルを開く可能性があるため、これは問題があるようです。これにより、何らかの問題が発生します。
また、ファイルサイズが減少したことに気付くよりも確実なメカニズムで「ロール」ファイルを検出したいと思います...エラーが発生しやすいようですが、ありそうにありません。
ファイル記述子やその他の低レベルのファイルユーティリティにアクセスできないため、テールの動作を再現できない可能性がありますが、名前の変更/削除のためにファイルを「ロック」せずにファイルを読み取るためのトリックはありますか? Windows 7)
別の可能性は、実際にtail -fプロセスを生成してプロセス出力を読み取ることだと思いますが、それはやや重いようです。ここでは60個のログファイルのようにスキャンしており、そのうちのいくつかは大量の出力を持っています(ほとんどはアイドル状態になります)。