Windows イベント ログで特定のセキュリティ イベントをキャプチャするログ解析サービスを開発しています。私の最初の考えは、Microsoft のLogParserを使用することでしたが、事前にわかっている特定のインスタンス/イベント ID を選択する以外の機能は探していません。
いくつかのベンチマークの後、EventLog.Entries
Microsoft の LogParser にクエリを実行するよりも、.NET コレクション全体を反復処理する方が 3 倍以上高速にデータを取得できることがわかりました。
最終的に、プルされるデータは SQL Server データベースに保存されます。このサービスは毎日この作業を行うため、エントリの重複を避けたいと考えてEventLog.Entries
います。データベースにまだ存在しないコレクション内の次のエントリを見つける方法が必要です。最初のエントリが見つかったら、データベースへの挿入を開始できます。
データベースの最新のDATETIME
タイムスタンプ フィールドを使用してこのエントリを検索し、それをコレクションTimeWritten
内のアイテムのプロパティと比較するバイナリ検索を作成しようとしていました。EventLog.Entries
これはできますが、この検索を実行するための組み込みメソッドが既にあるかどうか疑問に思っていますか?