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

时间:2015-06-10 15:04:02

标签: c#

我编写了一个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

更新:是否有办法在特定时间(例如,自过去1小时后创建的日志)中读取日志而不是读取所有日志?我的计划是阅读自过去1小时以来创建的所有日志和更新的过滤日志,但这可能不是解决方案。

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的。 EventLog类无法将最后x条目或条目超过y日期或其他任何内容。此外,您不允许远程接收EventWritten事件,这对我来说只是一个简单但远非理想的工作,可以限制日志大小。如果您一直在提取日志,那么无论如何您都不需要将其用于存档目的,但是如果您限制它的时间/大小,您将永远不会读取那么多数据,因此您的应用会保持快速。

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