【发布时间】:2015-10-09 03:55:24
【问题描述】:
我有一个 EventLogReader 对象,事件日志中的查询如下所示:
string query = "*[System[(Level=2) and TimeCreated[@SystemTime>='%LastRun%']]]")
代码基本上使用阅读器来查询自上次运行阅读器以来与搜索查询匹配的所有事件。
我宁愿为此目的使用 EventBookmark。毕竟,这就是它的目的!但我找不到任何有效的代码。
我现有的代码部分运行如下:
// This line replaces the %LastRun% code with the date
var myQuery = myEventLogQuery.Query.Replace("%LastRun%", myEventLogQuery.LastRun.ToString("o"));
var query = new EventLogQuery(myEventLogQuery.Log, myEventLogQuery.PathType, myQuery);
// Now set the LastRun date. I want to avoid this...
myEventLogQuery.LastRun = DateTime.UtcNow;
// ... by making this next line smarter.
var reader = new EventLogReader(query);
// var reader = new EventLogReader(query, ??? new EventBookmark());
EventRecord eventRecord;
while ((eventRecord = reader.ReadEvent()) != null)
{
EventRecords.Add(new EventRecordItem(eventRecord));
}
我应该可以使用第一个(或最后一个)EventRecord 的 EventBookmark 属性来限制下一个查询,但我想最初将 EventBookmark 设置为基本上是日志中的最高记录。
当应用程序最初运行时,我不需要它告诉我过去的所有事件日志条目,我只关心应用程序启动后发生的那些。
【问题讨论】:
标签: c# event-log system.diagnostics