昨今のシステムでログ取りを要件としていますよね?の5回目
私が個人的にログの一番にやっかいだと思っていることは、”遅い”ということです。
たとえばSQLでSelectで100件のデータを取得したとします。
だれがそのデータを見たかを保存するために、100行のデータを書き出しする必要があります。
実はこの時点でこのシナリオは破たんして知るかもしれません。
1行あたり1KBだったとして100KBになりますが、実装のし方によっては100回のオープンと、シークと、ライトと、クローズの塊になるかもしれません。
2つのWebトランザクションで同一処理を行った場合だとどうでしょう。
ファイルの排他処理待ちにより100行書くのに100秒かかる処理だと、2トランザクションで250秒かかるかもしれません。
もちろんこれくらいの規模だとlog4netやLoggingABなどを入れるでしょうが、それらでもファイルを開きっぱなしにして、フラッシュする粒度を上げてパフォーマンスを上げるということをしているだけだと思います。
ファイルを開きっぱなしにすると、別のアプリケーションからはさすがに書き込みできず、アプリケーション単位にファイルがわかれることになります。
つづく