如何过滤使用以下方法检索到的windows事件查看器日志。我想取最后一个小时的日志。
[DllImport("kernel32.dll")]
static extern uint GetLastError();
[DllImport("wevtapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EvtExportLog(IntPtr session, string channelPath, string query, string targetFilePath, int flags);
var success = EvtExportLog(IntPtr.Zero, "FilterLogs", "*", @"c:tempfiltered_app_log.evtx", 1);
我找到了一种查询和过滤事件查看器日志的方法。我在这里找到了MicrosoftMSDN文档和一篇相关文章,即如何从XPath查询中准备XPath过滤器查询。
只需复制XPath查询并在下面的代码中将其作为参数提供即可。
[DllImport("kernel32.dll")]
static extern uint GetLastError();
[DllImport("wevtapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EvtExportLog(IntPtr session, string channelPath, string query, string targetFilePath, int flags);
string query = "<QueryList><Query Id="0" Path="Application"><Select Path="Application"> *[System[TimeCreated[timediff(@SystemTime) <=3600000]]]</Select></Query></QueryList>";
var success = EvtExportLog(IntPtr.Zero, "FilterLogs", query, @"c:tempfiltered_app_log.evtx", 1);
在我的情况下,我已经过滤了过去一个小时的事件。您可以在XPathQuery文章后面准备过滤器,并在查询中提供它。