我正在使用EventLogWatcher类(因为它被认为是从事件日志中读取最快的可用方法)来读取新编写的事件。假设我有一个名为CustomEventLog1
的事件日志,大小为2MB。我有一个应用程序,可以将总共20000个事件写入该日志,并在日志达到最大大小时设置Overwrite events as needed
。
现在,当我开始写事件时,观察者显然滞后于阅读速度,事件就会丢失。
让我告诉你它是怎么发生的;当应用程序正在写入例如(1000th entry)
时,观察者仍在读取500th entry
,因此当观察者来读取2000th entry
时,写入应用程序已将其替换为4000th entry
。
所以在1999th entry
之后,我得到了4000th entry
。当应用程序完成写入20000 events
时,观察者只得到12020 entries
,其余的都丢失了。
有什么办法解决这个问题吗?我知道增加日志文件大小就可以了,但有什么方法可以在不增加日志大小和不降低写入速度的情况下实现这一点吗。
你想在不增加日志大小和降低写入速度的情况下进行重写,而且你还想读取已经重写的日志,你不能两者兼得。但是,您可以设置logsize >= 20000
,并在读取事件后删除该事件,以便最大限度地保存日志大小。