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