使用 FileSystemWatcher 观察 log4net 日志文件

ekl*_*lxw 3 .net c# logging log4net filesystemwatcher

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

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

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

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

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

编辑 :

此外,当我手动更新其他受监控文件时,观察器工作正常。所以这一定是 log4net 的问题。

ekl*_*lxw 5

我终于想出了解决方案。该问题与 FileSystemWatcher 关系不大。我的 log4net 配置缺少以下行:

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
Run Code Online (Sandbox Code Playgroud)

它仍然很有趣,因为我从文本编辑器打开日志文件没有任何问题。