apache のログにリクエストの処理時間を出力してみる。
今どきの apache のログ形式は LTSV にするのが基本だと思いますけど、何らかの理由で common や combined を踏襲せねばならないケースもあることでしょう。(いや、無いか?)
そんな場合に、アクセスログにリクエストの処理時間を出力したいなあ、とイロイロと考えた結果、個人的にはコレで良いんじゃないかと思っております。
LogFormat "%h %D %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
このフォーマットは、第二フィールドを %l から %D に変えています。%l は ident で取得したユーザ名を出力する指定ですが、これでユーザ名が取得できたのは前世紀の平和なインターネットの話です。現在はこのフィールドに出力されるのは - という文字であり実質的に未使用のフィールドです。だから積極的に使ってみようという考えです。
さらに手を入れてこんなフォーマットにすれば、リクエストされたバーチャルホスト名もログに記録できます。
LogFormat "%h %D %u %t \"%m /%v:%p%U%q %H\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
このフォーマットは "%r" を "%m /%v:%p%U%q %H" に置換しています。 本来ならば "%r" = "%m %U%q %H" なのですが、%U の前に /%v:%p を追加することでバーチャルホスト情報およびポート番号が付与された形でログに残すようにしています。この状態でも combined の形式との互換性は一応保たれていますので、各種ツールでログを解析する場合の問題は生じないはずです。