微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

阅读事件日志从最新到最旧

我已经写了一个简短的程序来build立使用在启动和closures时发布的事件日志消息的远程PC的正常运行时间。 目前的逻辑是:

foreach (eventlogentry) { if (entryTime > OldestTime) { if (entry = Startup) { addOnTime(entry.Time); } if (entry = Shutdown) { addOffTime(entry.Time); } } }

“OldestTime”定义了在多长时间后向后扫描….

我想知道是否有任何方法可以轻易地修改我的程序,从最新到最旧的事件读取事件?

它正在读取远程事件日志,并且需要一段时间才能运行此function,因为它从最后开始并向前读取。

手动创build未绑定的数据网格

在附加到NotifyIcon的ContextMenu中延迟单击事件

为什么monodevelop需要.NET 3.5框架在Windows上运行?

在.NET中是否有一个文件扩展名分隔符字符常量?

错误“目录不是空的。”当目录是empy时

我知道这一点,因为我添加一个“其他”块到第一个“如果”突破foreach块,如果条目不是在我们正在寻找的时间范围内,程序停止在它读取的第一个事件。

在ListView列中添加图像

信任自签名证书来validation服务器(Windows上的.NET客户端)

Windows,C#:从活动和保存的日志中读取事件日志条目

F#是.net窗口开发的一种可用语言

.NET WPF记住会话之间的窗口大小

你问这个问题已经有一段时间了,但是我遇到了同样的问题并找到了一个解决方案。

using System.Diagnostics; using System.Linq; EventLog events = new EventLog("Application",System.Environment.MachineName); foreach (EventLogEntry entry in events.Entries.Cast<EventLogEntry>().Reverse()) { //Do your tasks }

这个awnser仍然不如枚举它的速度快,但是比使用循环将项目复制到列表要优雅一些。

@ leinad13,对于您的应用程序,您需要将System.Environment.MachineName更改为具有要从中启动事件的计算机的名称的字符串,并将“Application”更改为您要查看的日志。 我认为你的情况是“系统”。

您的最佳解决方案可能是将数据移动到列表中,然后颠倒顺序。 像下面这样:

EventLog eventLog = new EventLog(); eventLog.Log = myEventLog; var eventList = new List<EventLogEntry>(); foreach(EventLogEntry entry in eventLog.Entries) { eventList.Add(entry); } eventList.Reverse();

这应该得到的数据倒序,即最新的第一,然后你可以像以前一样处理它,但这次退出循环,当你在最早的时间点击日期。

它不是一个理想的解决方案,因为您仍在处理整个日志,但是可能值得尝试查看是否在性能方面有所改进

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐