我已经创建了简单的WPF控件来监控日志文件中的更改。我使用FileSystemWatcher来观看特定文件。我的配置:
Directory = System.IO.Path.GetDirectoryName(logFileFullPath);
Filter = System.IO.Path.GetFileName(logFileFullPath);
NotifyFilter = (NotifyFilters.LastWrite | NotifyFilters.Size);
EnableRaisingEvents = true;
问题是只有在手动刷新目录或打开日志文件后才会显示更改。
我在我的log4net配置中使用RollingFileAppender,因此应立即写入更改。
问题是:为什么它不起作用以及如何使其发挥作用?
编辑:
此外,当我手动更新其他受监控文件时,观察者工作正常。所以它必须是一些log4net问题。
答案 0 :(得分:3)
我终于拿出了解决方案。这个问题与FileSystemWatcher没什么关系。我的log4net配置缺乏这条线:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
它仍然非常有趣,因为我从文本编辑器打开日志文件没有问题。
答案 1 :(得分:0)
试试这段代码,
FileSystemWatcher watcher = new FileSystemWatcher(@"logFileDirectoryPath");
watcher.Filter = "LogFileNameWithExtension";
watcher.EnableRaisingEvents = true;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size;
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
Changed Event
private void watcher_Changed(object sender, FileSystemEventArgs e)
{
//Do Something
}