C# 事件日志性能
我有一些代码,可以读取eventviewer中所有路径的错误。使用下面的代码,一切正常C# 事件日志性能,c#,C#,我有一些代码,可以读取eventviewer中所有路径的错误。使用下面的代码,一切正常 foreach (var log in EventLog.GetEventLogs(Environment.MachineName)) { log.Entries .Cast<EventLogEntry>() .Where(x => x.EntryType == Event
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));
});
}
foreach(EventLog.GetEventLogs(Environment.MachineName)中的变量日志)
{
日志条目
.Cast()
.Where(x=>x.EntryType==EventLogEntryType.Error&&x.TimeWrite>DateTime.Now.AddHours(-1))
托利斯先生()
.ForEach(x=>
{
添加(新的日志条目(x,log.LogDisplayName,ItemStatus.Error));
});
}
这通常需要不到两秒钟的时间。现在我的问题是,当我使用另一台机器而不是
Environment.MachineName
,这个过程需要5-20分钟
有没有办法加快速度
谢谢
避免使用LINQ对我的结果没有太大影响。好的,经过一些研究,我找到了解决办法。MSDN上有一个很好的解释/示例 当使用旧代码等待5-20分钟时,此代码在10秒内完成
我希望这对任何人都有帮助。好的,经过一些研究,我找到了解决方案。MSDN上有一个很好的解释/示例 当使用旧代码等待5-20分钟时,此代码在10秒内完成
我希望这对任何人都有帮助。好吧,如果它工作正常,你需要什么帮助?@我猜-速度很慢,标题是“性能”,谁还需要问号?快点!发帖到early:)@Sinatr我刚看了一下这个问题,并尝试了回避LINQ,但这对我的结果影响不大。还需要3分钟。所以,你们认为这是可能的放缓(如30秒)或我必须接受3-5分钟?@j.zeddi,我不是专家,接受的答案提到WMI,也许值得尝试?好吧,如果它工作得很好,你们需要什么帮助?@无损,我猜-它很慢,标题是“性能”,谁还需要问号?快点!发帖到early:)@Sinatr我刚看了一下这个问题,并尝试了回避LINQ,但这对我的结果影响不大。还需要3分钟。所以你们认为有可能放慢速度(比如30秒)还是我必须接受3-5分钟?@j.zeddi,我不是专家,被接受的答案是,也许值得尝试一下。考虑删除这个答案并张贴,因为这个帖子觉得你的问题更一般的版本,缺乏良好的样本。考虑删除这个答案,并张贴到该职位感到更一般的版本你的问题,缺乏良好的样本。
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.
}