Common Log Format と Combined Log Format の違い
|
Common Log Format と Combined Log Format の違いはApachの設定ファイルであるhttpd.confの414行辺りを見ても分かるようにCombined Log Format には\"%{Referer}i\" \"%{User-Agent}i\"があるが、Commonにはないことが分かります。
\"%{Referer}i\"
はhttp://guron.net/index.php のようなアクセスされたファイルが分かるようになります。
\"%{User-Agent}i\"
はMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Sleipnir/2.10 のようなブラウザの情報が分かるようになります。
Combined はLogによって詳しいことが分かるようになりますが、その分Logが重たくなります。 |
Logのローテイション
ApachにはLogの大きさや生成からの時間によって自動で新しいファイルを生成してくれる機能があります。例えば
CustomLog "|bin/rotatelogs.exe logs/local%y%m%d.log 86400" combined
と書きます。
|bin/rotatelogs.exeは自動生成してくれるプログラム(rotatelogs.exe)がある場所をしてします。最初の「|」と.exeは必ず必要です。
logs/local%y%m%d.log
はLogファイルを置いておく場所を設定します。%y%m%dはその日の年、月、日が入ります。2005年12月1日だと051201が入ることになります。%y%m%dを指定せずにログローテイションをすると、.logのあとに1970年からの経過秒数が付きます。
86400
はログローテイションを行う間隔を指定します。86400は 60秒(1分)×60分(1時間)×24時間(1日) をかけると86400になります。なので1日の秒数を表し1日ごと新しいLogファイルを生成するということになります。好きな秒数を指定できます。
秒間隔のほかに 5M など書くと5Mごとに新しいLogファイルを作ってくれるようになります。
combined
はLogファイルに書き込むLogの種類です。 |
what's new
Logの条件分け
Logは条件を付けて特定のLogを分けて保存することができます。例えば以下のような場合は
|
SetEnvIf Remote_Addr 192.168. home_log no_log
SetEnvIf Remote_Host localhost home_log no_log
SetEnvIf Request_URI "root.exe" worm_log no_log
SetEnvIf Request_URI "/cgi-bin/jcount/" count_log no_log
CustomLog logs/guron.net-count_log combined env=count_log
CustomLog logs/guron.net-home_log combined env=home_log
CustomLog logs/guron.net-worm_log combined env=worm_log
CustomLog logs/guron.net-access_log combined env=!no_log
|
SetEnvIf Remote_Addr 192.168. home_log no_log
SetEnvIfは環境変数を指定するという意味、Remote_Addrは以下で指定するアドレス(192.168.)だった場合「home_log」 「no_log」という変数を付加するという意味 |
SetEnvIf Remote_Host localhost home_log no_log
この場合は、Remote_Host(アクセスしてきたホスト名)がlocalhostだった場合、「home_log」 「no_log」という変数を付加するという意味
|
SetEnvIf Request_URI "root.exe" worm_log no_log
この場合は、Request_URI(アクセスしてきたファイルまでのアドレス)がroot.exeを含んでいる場合、「worm_log」 「no_log」という変数を付加するという意味
|
SetEnvIf Request_URI "/cgi-bin/jcount/" count_log no_log
この場合は、Request_URI(アクセスしてきたファイルまでのアドレス)が/cgi-bin/jcount/を含んでいる場合、「count_log」 「no_log」という変数を付加するという意味
(アクセスしてきたファイルまでのアドレスの例:http://guron.net/cgi-bin/jcount/jcount.cgi)
|
CustomLog logs/guron.net-count_log combined env=count_log
CustomLog logs/guron.net-home_log combined env=home_log
CustomLog logs/guron.net-worm_log combined env=worm_log
CustomLog logs/guron.net-access_log combined env=!no_log
ここでは、SetEnvIfで付加した変数によってLogを分けて書き込んでいきます。
(CustomLog logs/guron.net-count_log combined の説明は上の方を見てください)
env=count_log
これは、count_logの変数を付加したLogをguron.net-count_logに書き込むことを表します。
(上記の設定だとRequest_URI "/cgi-bin/jcount/" に当てはまるもの)
env=home_log env=worm_logも同じ意味です。
env=!no_log
はno_logの変数を付加されてないLogすべてをguron.net-access_logに書き込むという意味です。
|