使用FileSystemWatcher查看log4net日志文件

时间:2013-12-11 20:13:15

标签: c# .net logging log4net filesystemwatcher

我已经创建了简单的WPF控件来监控日志文件中的更改。我使用FileSystemWatcher来观看特定文件。我的配置:

Directory = System.IO.Path.GetDirectoryName(logFileFullPath);
Filter = System.IO.Path.GetFileName(logFileFullPath);
NotifyFilter = (NotifyFilters.LastWrite | NotifyFilters.Size);
EnableRaisingEvents = true;

问题是只有在手动刷新目录或打开日志文件后才会显示更改。

我在我的log4net配置中使用RollingFileAppender,因此应立即写入更改。

问题是:为什么它不起作用以及如何使其发挥作用?

编辑:

此外,当我手动更新其他受监控文件时,观察者工作正常。所以它必须是一些log4net问题。

2 个答案:

答案 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
 }