在 C# 中,可以使用 FileSystemWatcher 来监控一个文件、目录是否发生改变。但如果用来监控日志文件(比如 log4net 输出的日志)则会发现:即使启用 LastWrite 和 Size 过滤器,变更反馈也不及时,甚至根本不触发。
一个经过实测的方案就是定时不断的去检测文件大小:如果文件大小发生变动则表明文件内容发生了变化。
需要注意的是:整个过程中的 FileInfo 、 FileStream 和 StreamReader 对象均不支持复用。也就是在每次检测和读取时都要创建新的对象,否则变更无法体现。