读取远程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小时内创建的日志,但这可能不是一个解决方案。
简短的回答是否定的。EventLog
类不提供任何方法来获取最后的x
条目或超过y
日期的条目或任何效果。此外,您不允许远程接收EventWritten
事件,这给了您一个简单但远非理想的工作,即限制日志大小。如果你一直在提取日志,那么你就不需要它用于存档,但是如果你限制它的时间/大小,你就永远不会读取那么多数据,所以你的应用程序将保持快速。
正如其他一些人在评论中建议的那样,唯一合理的选择是构建一些中间层,通过HTTP或其他方式将EventWritten
事件发送到中央服务器。