gpt4 book ai didi

c# - 从最新到最旧读取事件日志

转载 作者:可可西里 更新时间:2023-11-01 14:15:13 24 4
gpt4 key购买 nike

我编写了一个简短的程序,使用在启动和关闭时发布的事件日志消息来确定远程 PC 的正常运行时间。目前的逻辑是:

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

“OldestTime”定义时间向后扫描多远....

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

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

我知道这一点是因为我在第一个“if”中添加了一个“else” block 以跳出 foreach block ,如果条目不在我们正在寻找的时间跨度内并且程序在它读取的第一个事件处停止。

最佳答案

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

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 更改为一个字符串,其中包含您希望从中获取事件的计算机的名称,并将“应用程序”更改为您想要查看的日志。我认为你的情况是“系统”。

关于c# - 从最新到最旧读取事件日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com