繁体   English   中英

提高事件日志的读取速度?

[英]Enhance reading speed from event log?

我有一个应用程序从事件日志中读取一些数据,如果事件日志太大(即超过30,000个条目),则此应用程序的性能太差。

我正在寻找一种更快的方式来获取信息,

我已经使用了两种方法,使用WMI进行的查询是{从Win32_NTLogEvent中选择消息,其中Logfile ='System'和EventCode ='1'}

我使用了System.Diagnostic.Eventlog.GetEventLogs(); 这也需要太多时间

我应该使用什么来提高搜索速度?

在AMD Athlon X3上的100,000个事件中,这段简单的代码需要4.6秒(i5更快)。

string queryString = "*";
int eventsCount = 0;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
EventLogQuery eventsQuery = new EventLogQuery("MyLog", PathType.LogName, queryString);
EventLogReader logReader = new EventLogReader(eventsQuery);

for (EventRecord eventInstance = logReader.ReadEvent();
                null != eventInstance; eventInstance = logReader.ReadEvent())
{
  if (eventInstance.Id == 100) //random event id                 
     ++eventsCount;

}
stopWatch.Stop();

Console.WriteLine("Found events: {0}", eventsCount);
Console.WriteLine("Time elapsed: {0}", stopWatch.Elapsed);

为了获得更好的性能,您可以自己或通过Windows eventviewer使用正确创建的XPATH查询(创建Custom view不是选择XML选项卡)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM