读取远程Windows事件日志需要很长时间

本文关键字:长时间 日志 事件 Windows 读取 | 更新日期: 2023-09-27 17:54:51

我编写了一个c#程序,它连接到远程主机并读取Windows事件日志。

System.Diagnostics.EventLog eventLog = new System.Diagnostics.EventLog();
eventLog.Log = "Application";
eventLog.MachineName = "remoteMachineName";
if (EventLog.Exists(eventLog.Log, eventLog.MachineName))
{
    foreach (EventLogEntry entry in eventLog.Entries)
    {
        Console.WriteLine(entry.Message);
    }
}

但是,由于事件数量非常多,当我运行这段代码时,需要一些时间来获取eventLog.Entries

Update:是否有一种方法可以读取特定时间以来的日志(例如,自过去1小时以来创建的日志),而不是读取所有日志?我的计划是读取所有日志,然后过滤过去1小时内创建的日志,但这可能不是一个解决方案。

读取远程Windows事件日志需要很长时间

简短的回答是否定的。EventLog类不提供任何方法来获取最后的x条目或超过y日期的条目或任何效果。此外,您不允许远程接收EventWritten事件,这给了您一个简单但远非理想的工作,即限制日志大小。如果你一直在提取日志,那么你就不需要它用于存档,但是如果你限制它的时间/大小,你就永远不会读取那么多数据,所以你的应用程序将保持快速。

正如其他一些人在评论中建议的那样,唯一合理的选择是构建一些中间层,通过HTTP或其他方式将EventWritten事件发送到中央服务器。