指定された時間枠内で発生した KEY_STRING を検出するために、サードパーティ アプリケーションから適切なサイズのログ ファイル (最大 50Mb、その時点でラップ) を解析しています。このログ ファイルの典型的なエントリは次のようになります。
DEBUG 2013-10-11@14:23:49 [PID] - Product.Version.Module
(Param 1=blahblah Param2=blahblah Param3 =blahblah
Method=funtionname)
String that we usually don't care about but may be KEY_STRING
エントリは空白行で区切られます (エントリの最後に \r\n、次のエントリの開始前に \r\n)
これは Windows 固有の実装用であるため、移植可能である必要はなく、C/C++/Win32 にすることができます。
この行を 1 行ずつ読み取るのは時間がかかりますが、タイムスタンプを解析してエントリが指定された時間枠内にあるかどうかを確認してから、エントリに KEY_STRING が存在するかどうかを確認できるという利点があります。チャンクごとにファイルを読み取ると、KEY_STRING が見つかることがありますが、チャンクに以前のタイムスタンプがないか、チャンクの境界が KEY_STRING の途中にある可能性さえあります。ファイル全体をメモリに読み込んで解析することはオプションではありません。現在、これが含まれるアプリケーションのフットプリントは比較的小さいため、ファイルを解析するためだけにこれを最大 10 倍に増やすことは正当化できません (一時的であっても)。 . 区切られたチャンク (具体的には "\r\n\r\n") でファイルを読み取る方法はありますか? または、私が考えていなかった別の/より良い方法はありますか?
これに関するヘルプは大歓迎です!