У меня есть объект 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));
}
Я должен иметь возможность использовать свойство EventBookmark первой (или последней) EventRecord, чтобы ограничить следующий запрос, но я хочу, чтобы изначально EventBookmark был в основном самой высокой записью в журнале.
Когда приложение запускается изначально, мне не нужно, чтобы оно сообщало мне обо всех прошлых записях журнала событий, мне нужны только те, которые произошли после запуска приложения.