我可以限制FileSystemWatcher吗,或者Timer是一个更好的选项

本文关键字:一个 更好 选项 FileSystemWatcher Timer 或者 我可以 | 更新日期: 2023-09-27 18:23:52

我想解析日志文件中的数据,将其泵入数据库,然后清除日志文件。

我可以使用FileSystemWatcher组件,并监视Change事件,但该事件将不间断地启动,因为日志文件几乎是"不断"写入的。我不想随意打开/关闭数据库连接。

我目前的本能是使用计时器,然后每隔一段时间(根据时间或文件的时间和大小)解析/泵送/清除日志文件。

是否有一种通用/行之有效的方法来处理场景(设计模式)?

更新:我看到FileSystemWatcher有一个NotifyFilter属性,其中一个可过滤项是"Size";我猜(还没有找到任何验证),每当文件大小更改1KB时,它就会启动;这将是一个合理的"节流阀",如果是真的。。。

我可以限制FileSystemWatcher吗,或者Timer是一个更好的选项

不确定这是否是一种设计模式,但如果在实际写入日志文件之前控制缓冲区的大小,则可以将频率降至最低。

这里的更改事件太闲聊了。我会用计时器定期检查文件,查看修改时间戳(可能会创建,尤其是当有人删除/重新创建文件时)

您可以控制日志文件的生成吗?如果是这样的话,您可以创建一个新的日志文件,比如每次它达到特定的日志大小时,并将旧的日志文件重命名为特定的格式。然后为"归档"日志文件设置文件系统观察程序过滤器,并在创建日志文件时对其进行处理。