mod_logioの組み込み
sorry Japanese only
最終更新日 2005/01/02
page size = Mbyte

実際に転送したバイト数を記録に残すことは出来ないの?
って事で 2chで質問した人がいて、mod_logioと答えを書いて下さった方がいました。
2チャンネルログの関連部分のみ => 2ちゃん_apache.html

apacheのログに残る転送量表示は、途中で転送中断したら、実際の転送量の数値が記録に残るのだとばかり思っていました。
途中中断しても、全部転送しているような数値として残るとは思ってませんでした。

しかし? mod_logioとは聞いたこと無いぞ?って事で調べてみたら、実際の送信転送量、受信転送量を access.logへ記録する。
と書いてありました。
フムフムおもしろそうだ。って事で apache作り直してみました。

但し mod_logioを組み込み、実際の転送バイト数をログへ書き込むようにしてしまうと、通常の combined形式とは様式が異なってしまうため、webalizerなどの LOG解析ツールが読み込めなくなってしまいます。
読み込めるよう、LOGの再変換などの作業が必要になりますから注意が必要です。

Linuxの場合

まずはソースファイルを解凍します。
[root]# tar xvf apache2050.tar 

[root]# cd httpd-2.0.50
[root]# configure --enable-logio
解凍したフォルダーに入って configureを実行しますが、configure実行する時、組み込みたい moduleを --enableオプションにて指定します。
単純に、mod_logioを組み込みたいんだったら logioと指定すれば組み込まれたので、先頭 4文字、mod_を取った文字列指定すれば良いんだと思います。
すると、指定したモジュールが組み込まれたと出てきます。=> configure実行結果.txt

configureとオプション無しで実行した所
checking whether to enable mod_logio... no

configure --enable-logioとオプション付きで実行した所
checking whether to enable mod_logio... yes (default)

makeを実行し実行ファイルを作成します。
make installすれば良いんですが、そこまでする必要は今回は無いんで、 .libs/内に出来上がった httpd本体を apache2/binディレクトリーへコピーします。

apache2/conf/httpd.confは以下のようにします。

LogFormat "%h %l %u %t \"%!414r\" %>s %b %I %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
%Iと %Oを追加します。
%Iが受信バイト数
%Oが送信バイト数

ログは以下のようになりました。
msnbot64085.search.msn.com - - [03/Aug/2004:18:57:29 +0900] "GET /douga/monki-simona_352x240_CQ77_MPEG1_CQ77_14m21s_20040404.mpg HTTP/1.0" 200 237907972 248 25416 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"
msnbot64085.search.msn.com - - [03/Aug/2004:18:58:31 +0900] "GET /douga/HID_352x240_MPEG1.mpg HTTP/1.0" 200 4057092 213 25416 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"
msnbot64085.search.msn.com - - [03/Aug/2004:18:59:30 +0900] "GET /douga/kisira-fumoto_352x240_MPEG1_CQ77_128kMP2_20031228PM3.mpg HTTP/1.0" 200 327208964 248 25416 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"
msnbot64085.search.msn.com - - [03/Aug/2004:19:00:14 +0900] "GET /douga/nejime-sata_352x240_MPEG1_CQ77_128kMP2_20031230PM2.mpg HTTP/1.0" 200 272234500 246 25416 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"
msnbot64085.search.msn.com - - [03/Aug/2004:19:01:04 +0900] "GET /douga/gun-oonakao_DivX511_CQ77_640x480_128kMP3.avi HTTP/1.0" 200 157687312 236 25416 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"
msnbot64085.search.msn.com - - [03/Aug/2004:19:01:50 +0900] "GET /douga/kasano-kotobuki-kitada_352x240_MPEG1_CQ77_128kMP2_20031228PM1.mpg HTTP/1.0" 200 122095620 257 33888 "-" "msnbot/0.11 (+http://search.msn.com/msnbot.htm)"

upローダーは開設してないんで、受信バイト数はいらないかな?(結局 %Iは消しました)

win32の場合

win32版の apache2の場合には、


の様に mod_logio.soが最初から apache2/modulesディレクトリーに存在しますから、
httpd.confにて moduleを組み込み、logformatの部分へ %Oを追加するだけです。

LoadModuleの一番最後に追加
LoadModule logio_module modules/mod_logio.so

LogFormatの所へ %Oを追加
LogFormat "%h %l %u %t \"%!414r\" %>s %b %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
10066
戻る