[an error occurred while processing this directive]
[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

mod_log_configモジュール

このモジュールはmod_log_config.cファイルに含まれ、 Apache 1.2ではデフォルトでコンパイルされます。 mod_log_configはApache1.2でmod_log_commonと置き換えられました。 バージョン1.2より以前、mod_log_configはオプションモジュールでした。このモジュールは、ログのフォーマットを、 コモンログフォーマットか、ユーザが定義した特別なフォーマットに設定できます。

概要

このモジュールは3つの命令を提供します: TransferLogはログファイルを生成し、 LogFormat は特別なフォーマットを提供し、 CustomLogはログファイル名とフォーマットを定義します。 TransferLogCustomLog命令は、同時に各々の要求のログファイルを使用できます。

互換性について

ログファイルフォーマット

LogFormatに何も指定しなければ、一般的なコモンログフォーマット (CLF)"Common Log Format"のTransferLogが生成されます。 CLF の内容の全ての行は下記のことを表現しています。 またはログファイルはカスタマイズすることが出来ます。 (また、同時に複数のログファイルで異なったフォーマットを使用すること が出来ます) カスタムフォーマットはLogFormatCustomLog によって設定します。

コモンログフォーマット

コモンログフォーマット(CLF)は各々のリクエストを1行で格納しています。1行は幾つかのスペースによって区切られた項目によって構成されています:
host ident authuser date request status bytes
もし項目に入れる値がないときは、ハイフン(-)で表現されます。 それら項目の意味と値は以下の通りです:
host
FQDN 形式のクライアント名。またはクライアント名が利用できない時には IP アドレス。
ident
もしIdentityCheckが有効になっていてクライアントマシンでidentdが動作している場合の、クライアントから返される個人情報。
authuser
保護するドキュメントにパスワード要求を行った場合、 使用されたユーザID
date
リクエストの日付。書式は次の通り:
date = [day/month/year:hour:minute:second zone]
day = 2桁
month = 3文字
year = 4桁
hour = 2桁
minute = 2桁
second = 2桁
zone = (`+' | `-') 4桁
request
クライアントからダブルクォート(")によって囲まれたクライアントからのリクエスト内容。
status
クライアントに返す3桁のリターンコード
bytes
クライアントに転送したオブジェクトのバイト数。この中にヘッダ情報は含みません。

カスタムログフォーマット

LogFormatCustomLogの書式は文字列です。 この文字列は、それぞれのリクエストをログファイルに格納します。 指定した文字をログファイルに含めることが出来、また `%' 命令は以下の値に置き換えられます:
%...b:          転送量(Bytes
%...f:          ファイル名
%...{FOOBAR}e:  環境変数 FOOBAR のコンテンツ
%...h:          リモートホスト名
%...{Foobar}i:  Foobar のコンテンツ:
 サーバに送信されるリクエストにあるヘッダライン
%...l:          リモートロングネーム
 (identdをクライアントがサポートしている時)
%...{Foobar}n:  他のモジュールからのノート"Foobar"のコンテンツ
%...{Foobar}o:  Foobar のコンテンツ: リプライにあるヘッダライン
%...p:          リクエストを受けたポート
%...P:          リクエストを受けたサーバプロセスのプロセス ID
%...r:          リクエストの最初の行
%...s:          ステータス。 For requests that got internally redirected,
 this
                is status of the *original* request --- %...>s for the
 last.
%...t:          Time, in common log format time format
%...{format}t:  The time, in the form given by format, which should
                be in strftime(3) format.
%...T:          The time taken to serve the request, in seconds.
%...u:          Remote user (from auth; may be bogus if return status (%s)
 is 401)
%...U:          リクエストされた URL パス
%...v:          サーバ名(バーチャルホスト等)
`...'は何も入れない(例えば "%h %u %r %s %b")か、状態を表すために付加するアイテム(いずれの場合でも、コンディションが得られない時は`-'となります)文字列 %r, %...i,%...o;にはエスケープが効きませんので注意してください。;古い記憶ですが、以前はエスケープが便利に感じたのですが、全ての`%..i'を正しく解読することが困難なので良くないと思います。

The forms of condition are a list of HTTP status codes, which may or may not be preceded by `!'. Thus, `%400,501{User-agent}i' logs User-agent: on 400 errors and 501 errors (Bad Request, Not Implemented) only; `%!200,304,302{Referer}i' logs Referer: on all requests which did not return some sort of normal status.

コモンログフォーマットは、文字列"%h %l%u %t \"%r\" %s %b" によって定義されていることに注意してください。 拡張フォーマットを望むなら、これを基本にした方が良いです。 (例えば、拡張フィールドはこの後に追加するなど) NCSA's extended/combined log format would be "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"".

多重ログファイルを使う

TransferLogCustomLog命令は要求されたログを 複数のファイルに出力できます。 各々の要求はこれらの命令で定義できます。

Use with Virtual Hosts

<VirtualHost>セクションにTransferLog または CustomLog命令が含まれていないときは、ログファイルの定義はメインサーバでの定義と同じになります。メインサーバでなく、ここに何かしらの定義があると、そのバーチャルホストのだけのログをその定義の範囲で出力します。以下の例を参照してください。

セキュリティーに関する考察

もし、サーバーを起動させたユーザー以外の誰かが、ログファイルが書き込まれるディレクトリに書き込み権限を持っていたならば、あなたのセキュリティになぜ弱点があったのかについて、security tipsのドキュメントを読んでください。

命令


CookieLog

Syntax: CookieLog filename
Context: server config, virtual host
Module: mod_cookies
Compatibility: Apache 1.2 以降で利用可能

CookieLog命令はクッキーのログファイル名を指定します。実ファイルはファイル名にServerRootが付加された位置に作られます。この命令はmod_cookiesとの互換性のためだけに付加されており、価値は下がってきています。


CustomLog

Syntax: CustomLog file-pipe format-or-nickname
Context: server config, virtual host
Status: Base
Compatibility: NicknameはApache 1.3以降でのみ有効
Module: mod_log_config

最初の項目はログを行うファイル名です。 これはちょうどTransferLogと同じで、 フルパスか、対象のサーバのルートからの相対パスで指定します。

このフォーマットの定義が、ログファイルの全ての行のフォーマットを決定します。フォーマットに対し指定できるオプションは、LogFormat命令での法則と全く同じです。もしフォーマットがスペースを含んでいるならば、(おそらく、ほとんど全ての場合でそうでしょうが、)スペースをダブルクオーテーションで囲まなければなりません。

現行のログの書式の変わりに、LogFormat命令で定義されているnicknameのフォーマットを使用することができます。


LogFormat

Syntax: LogFormat format [nickname]
Default: LogFormat "%h %l %u %t \"%r\" %s %b"
Context: server config, virtual host
Status: Base
Compatibility: NicknameはApache 1.3以降でのみ有効
Module: mod_log_config

TransferLog命令によって名付けられたデフォルトのログファイル名のフォーマットを指定します。フォーマットの法則についての詳細は、Custom Log Formatsの項目を参照してください。

この項目の設定でnicknameを使用しているのであれば、全てのフォーマットの書式を繰り返し書くのではなく、他のLogFormatCustomLog命令の中でnicknameを使用した方がよいでしょう。

ニックネームを定義しているLogFormat何の役にも立っていません。 -- それは単にニックネームを定義しただけであり、フォーマットを変更しその設定をデフォルトにすることではありません。


TransferLog

Syntax: TransferLog file-pipe
Default: none
Context: server config, virtual host
Status: Base
Module: mod_log_config

TransferLog 命令は、最も新しくLogFormat命令で定義されたフォーマットに基づいたログファイル、または、他に何のデフォルトフォーマットも定義されていなかった場合の共通のログフォーマット、に対して変更を加えます。 File-pipe は、以下のように指定します。

A filename
ServerRootのファイル名
`|' の後にコマンドが続きます。
標準入力で、代理のログ情報を受け取るプログラム。もしバーチャルホストがメインサーバーからTransferLogを受け取っているならば、バーチャルホストに対する新しいプログラムは開始することができない、という点に注意してください。
セキュリティー: プログラムが使われるとき、それはhttpdをスタートさせたユーザーの権限で実行されます。サーバーを開始したのがrootであれば、プログラムもrootの権限で実行されるので、そのプログラムが安全なものかどうか確認するようにしてください。


Apache HTTP Server Version 1.3

検索文字
このJAPACHE!ニュースグループへ ( japache.mod.log.config ) | JAPACHE!ニュースについて | JAPACHE!ホームページへ

Index Home The English original manual is here.


このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。