C# 实时监视日志文件的最智能的方法?

C# 实时监视日志文件的最智能的方法?,c#,events,logging,gridview,csv,C#,Events,Logging,Gridview,Csv,我需要编写一个实时监控应用程序,它将日志文件中的信息存储到gridview中它们可以从我的应用程序中的其他特性/功能进一步处理 我在我的服务器上运行了一个应用程序,它会在奇数时间将条目创建到日志文件中。(csv格式) 这些文件有时最多可以有100MB。我并不总是想扫描/检查整个文件,因为我知道新的度量将始终添加到文件底部 我应该如何构造更新函数(在我的实时监控应用程序中) 我是否应该比较文件大小,以及文件大小是否已更改?->检查/更新 我应该每15分钟检查一次文件吗 我应该检查“修改日期”吗

我需要编写一个实时监控应用程序,它将日志文件中的信息存储到gridview中它们可以从我的应用程序中的其他特性/功能进一步处理

我在我的服务器上运行了一个应用程序,它会在奇数时间将条目创建到日志文件中。(csv格式)
这些文件有时最多可以有100MB。我并不总是想扫描/检查整个文件,因为我知道新的度量将始终添加到文件底部

我应该如何构造更新函数(在我的实时监控应用程序中)

  • 我是否应该比较文件大小,以及文件大小是否已更改?->检查/更新
  • 我应该每15分钟检查一次文件吗
  • 我应该检查“修改日期”吗
顺便说一句,一次完整的扫描是很耗时的,只扫描新条目可以减少这一点吗


所以我的问题是:解决这个问题的最好方法是什么

我使用裸尾。它在不断更新时运行良好,只要日志中有有有意义的语句,您就可以轻松跟踪正在发生的更改。

您可以尝试在文件更改时使用for通知。但我不知道它是否适合您的用例。我认为您需要回答的一个重要问题是,文件修改的频率有多高。如果经常使用,那么基于时间的检查将比文件系统监视程序更合适。如果不经常修改,那么您可以在每次修改文件时使用FileSystemWatcher进行修改。白天(非常)频繁,只是偶尔修改。每分钟/小时的条目差异很大。如果没有理由无法将日志放入数据库,我的建议是将其移至数据库。这将使处理更加容易。如果没有,那么定期检查文件将是正确的方法,我会以某种方式跟踪您读取的最后一行号,然后您可以快速前进到文件中的该位置并从那里开始读取。另外,请参阅以获取读取大文件的信息。您有两个选项:MemoryMappedFile或StreamReader。其中一个可以让你在不扫描文件的情况下读取文件中的随机位置。另一个则正好相反Baretail看起来不错,但我需要进一步处理数据。我不只是想当班长。这就是为什么我不想处理一些C代码。无论如何谢谢你!您可以使用NLogger(一个.net库)来记录数据,它可以包括时间戳。如果您正在查找特定项目,请提供日志条目键,以便轻松查找。我发现这通常足以创建可管理的日志。