特定のパターンを検出するためにログファイルを継続的に読み取る必要があります。ログライターの操作で実行する必要があるファイル操作を妨げずに、どうすればできますか?他のプロセスの変更を防ぐことができないような方法でファイルを読む
ログ作成プロセスは、ログを作成するだけでなく、ファイルを定期的に別の場所に移動します(一定のサイズに達する)。
ファイルの読み方では、ログライターアプリはファイルを移動できません。私はさまざまなFileShareオプションを使って無駄に遊んだ。ここで
は私のコードのバージョンを簡略化されています:
using (FileStream stream = new FileStream(@"C:\temp\in.txt", FileMode.Open, FileAccess.Read, FileShare.Delete))
{
TextReader tr = new StreamReader(stream);
while (true)
{
Console.WriteLine(".. " + tr.ReadLine());
Thread.Sleep(1000);
}
}
"ログライターアプリはファイルを移動できません" - 移動しているファイルにリーダーを開いたままにしますか? –
ファイルが利用可能である限り、私は読書を続けたいと思います。私は、ロギングアプリケーションがファイルをいつ/どのように移動するかについて、何も制御できません。理想的には、ファイルが移動されたときに例外が発生し、その時点から新しいログファイルを読み始めることになります。 – akirekadu