首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventLog性能

EventLog性能
EN

Stack Overflow用户
提问于 2017-08-21 13:30:48
回答 1查看 453关注 0票数 1

我有一些代码,应该读取事件查看器中所有路径中的错误。下面的代码都能很好地工作。

代码语言:javascript
复制
        foreach (var log in EventLog.GetEventLogs(Environment.MachineName))
        {
            log.Entries
                .Cast<EventLogEntry>()
                .Where(x => x.EntryType == EventLogEntryType.Error && x.TimeWritten > DateTime.Now.AddHours(-1))
                .ToList()
                .ForEach(x =>
                {
                    list.Add(new LogEntry(x, log.LogDisplayName, ItemStatus.Error));
                });
        }  

通常用不了两秒钟。

现在我的问题是,当我使用另一台机器而不是Environment.MachineName时,这个过程需要5-20分钟。

有办法加快速度吗?

谢谢

避免LINQ对我的结果没有太大的影响。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-22 08:04:04

经过调查我找到了解决办法。在MSDN 这里上可以找到一个很好的解释/示例。

代码语言:javascript
复制
    EventLogSession session = new EventLogSession(Environment.MachineName);

    // [System/Level=2] filters out the errors
    EventLogQuery query = new EventLogQuery("Log", PathType.LogName, "*[System/Level=2]");

    EventLogReader reader = new EventLogReader(query);

    for (EventRecord eventInstance = reader.ReadEvent();
        null != eventInstance;
        eventInstance = reader.ReadEvent())
    {
        // Output or save your event data here.
    }

当使用旧代码等待5-20分钟时,这个代码在不到10秒的时间内完成。

希望这对任何人都有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45798447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档