EventLogSession.ExportLogAndMessages query

本文关键字:query ExportLogAndMessages EventLogSession | 更新日期: 2023-09-27 18:06:41

我需要在一些文件中保存windows事件日志,现在我使用:

var els = new EventLogSession();
els.ExportLogAndMessages("Application", PathType.LogName, "*", Path.Combine("c:''Application.evtx"), false, CultureInfo.CurrentCulture);

这工作得很好,但我想获得DateTime范围之间的日志,我怀疑ExportLogAndMessages中的第三个参数"查询"可能会帮助我。

现在如何编写这个"query",如果"query"没有帮助,无论如何都可以这样做。

EventLogSession.ExportLogAndMessages query

这两个页面都不是很有用,因为查询语法不清楚。

你可以右键单击事件查看器中的任何日志,并选择"过滤当前日志…",当你创建一个过滤器时,你会在下一个选项卡中看到底层的xml。您可以使用它作为您的查询

这些链接可以帮助您形成您的查询:

如何:查询事件

事件查询和事件XML

你应该编写一个查询来获取某个日期范围内的事件。

我认为你可以在你的查询中使用:TimeCreated参数

下面是导出过去8小时的事件日志的示例:

int pastNHours = 8;
long timeDuration = pastNHours * 60 * 60 * 1000; // Hours to milli seconds.
string queryString = $"*[System/TimeCreated[timediff(@SystemTime) < {timeDuration}]]";
using (var evtLog = new EventLogSession()) {
evtLog.ExportLogAndMessages("Application", PathType.LogName, queryString, "D:''TEMP''App-test-export.evtx", false, CultureInfo.CurrentCulture);
}

您应该能够添加"answers"条件并进一步过滤以获得两个时间戳之间的事件。

在最后一个答案出现9.5年后,我来到了这些页面!也许有人在寻找这些片段…