如何防止从事件日志读取时丢失事件检索?

时间:2019-02-05 15:48:42

标签: c# winapi event-log system.diagnostics

我正在使用EventLogWatcher类(因为这是建议从事件日志中读取的最快方法)来读取新编写的事件。假设我有一个名为@parallel=false的事件日志,大小为2MB。我有一个应用程序,该日志总共写入了20000个事件,并且在日志达到最大大小时设置了CustomEventLog1

现在,当我开始编写事件时,观察者显然落后于阅读速度,事件丢失了。

让我说说它是如何发生的;当应用程序写Overwrite events as needed时,观察者仍在读取(1000th entry),因此,当观察者读500th entry时,书写应用程序已将其替换为{{1} }。

所以在2000th entry之后,我得到了4000th entry。当应用程序完成写入1999th entry时,观察者仅得到4000th entry,其余的丢失。

有什么办法可以解决此问题?我知道增加日志文件的大小就可以做到,但是有什么方法可以在不增加日志大小和不降低写入速度的情况下实现这一目标。

1 个答案:

答案 0 :(得分:-1)

您要进行覆盖而不增加日志大小并降低写入速度,并且您还想读取已被覆盖的日志,您不能同时拥有两者。但是,您可以设置logsize >= 20000,并在事件被读取后将其删除,以便最大程度地保存日志大小。