Я занимаюсь разработкой службы анализа журналов, которая фиксирует определенные события безопасности в журнале событий Windows. Первоначально я хотел использовать Microsoft LogParser , но я не ищу никаких функций, кроме выбора конкретных экземпляров / идентификаторов событий, уже известных заранее.
После некоторого тестирования я обнаружил, что итерация по всей коллекции .NET EventLog.Entries
была в 3 раза быстрее при извлечении данных, чем при запросе Microsoft LogParser.
В конечном итоге данные, которые нужно извлечь, будут сохранены в базе данных SQL Server. Поскольку служба будет выполнять эту обязанность ежедневно, я хочу избегать повторяющихся записей, и мне потребуется способ найти следующую запись в коллекции EventLog.Entries
, которой еще нет в базе данных. Я могу начать вставку в базу данных, как только найду эту начальную запись.
Я как раз собирался написать бинарный поиск, чтобы найти эту запись, используя самое последнее поле DATETIME
timestamp из базы данных и сравнивая его со свойством TimeWritten
из элемента в коллекции EventLog.Entries
. Это я могу сделать, но мне интересно, есть ли уже встроенный метод для выполнения этого поиска?