Apacheログのリクエスト時間にミリ秒・マイクロ秒を表示する
Apacheログに出力するリクエスト時間にミリ秒・マイクロ秒まで表示する方法を紹介します。
1.Apacheログのフォーマット
Apacheログ(/var/log/httpd/access_log)のフォーマットは、/etc/httpd/conf/httpd,confにあるLogFormatディレクティブで設定します。
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
フォーマット設定項目の詳細はここでは割愛しますが、「%」の後に半角英文字や記号を設定することで様々なフォーマットを設定することができます。
2.Apache2.4以降のバージョンでミリ秒・マイクロ秒を表示する
Apache2.4以降であれば、LogFormatディレクティブのフォーマットに
%{msec}t
あるいは
%{usec}t
と記述することで、リクエスト時間のエポック秒がミリ秒またはマイクロ秒で表示できるようです。
が、作業で使っているApacheのバージョンが2.2だったため、このフォーマットを利用することができません。
3.Apache2.4以前のバージョンでマイクロ秒を表示する
参考サイトに紹介されている方法で解決したので、本エントリーでも紹介させていただきます。
まず、ログ出力用に改修されている以下の「kikumoto / mod_log_config.c」をダウンロード。ページ内左にある「Download Gist」をクリックすればダウンロードが開始します。
ダウンロードしたアーカイブを展開し、中にあるmod_log_config.cをroot権限で/etc/httpd/modules/loggersにアップロードします(loggersディレクトリがなければ作成)。
アップロード後、ビルドとインストールをroot権限で実行します。apxsコマンドはApacheの拡張モジュールをビルド・インストールしてくれるものです。
# cd /etc/httpd/modules/loggers
# apxs -c mod_log_config.c
# apxs -i mod_log_config.la
インストール完了後、root権限で/etc/httpd/conf/httpd,confにあるLogFormatディレクティブを変更します。
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %{usec}t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
変更後Apacheを再起動して、ログの内容が変更されていればOKです。
4.Apache2.4以前のバージョンでミリ秒を表示する
こちらは実際に試していませんが、上記の参考サイトの方が参考にされている方法です。
リンク先にあるコードをコンパイルしたあと、apxsコマンドで拡張モジュールのビルド・インストールを行ってください。