【发布时间】:2023-04-03 00:51:01
【问题描述】:
我需要不断读取日志文件以检测某些模式。如何在不干扰日志写入操作需要执行的文件操作的情况下做到这一点?
日志写入进程除了写入日志外,还会定期将文件移动到另一个位置(达到一定大小的位置)。
由于我读取文件的方式,日志写入器应用无法移动文件。我尝试了各种 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);
}
}
【问题讨论】:
-
“日志写入器应用程序无法移动文件”——您想让阅读器在正在移动的文件上保持打开状态?
-
只要文件可用,我就想继续阅读。我无法控制日志记录应用程序何时/如何移动文件。理想情况下,当文件被移动并从那时起开始读取新的日志文件时,我会得到一个异常。