|
mod_log_config.cファイルに含まれ、
Apache 1.2ではデフォルトでコンパイルされます。
mod_log_configはApache1.2でmod_log_commonと置き換えられました。
バージョン1.2より以前、mod_log_configはオプションモジュールでした。このモジュールは、ログのフォーマットを、
コモンログフォーマットか、ユーザが定義した特別なフォーマットに設定できます。
TransferLogはログファイルを生成し、
LogFormat は特別なフォーマットを提供し、
CustomLogはログファイル名とフォーマットを定義します。
TransferLogとCustomLog命令は、同時に各々の要求のログファイルを使用できます。
CookieLog命令が組み込まれています。
CookieLogの使用は非難されています。
そして、代わりにCustomLogによってユーザの足跡を辿るほうが
良いでしょう。
LogFormatとCustomLog
によって設定します。
host ident authuser date request status bytesもし項目に入れる値がないときは、ハイフン(-)で表現されます。 それら項目の意味と値は以下の通りです:
date = [day/month/year:hour:minute:second zone]
day = 2桁
month = 3文字
year = 4桁
hour = 2桁
minute = 2桁
second = 2桁
zone = (`+' | `-') 4桁")によって囲まれたクライアントからのリクエスト内容。
LogFormatとCustomLogの書式は文字列です。
この文字列は、それぞれのリクエストをログファイルに格納します。
指定した文字をログファイルに含めることが出来、また `%'
命令は以下の値に置き換えられます:
%...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\"".
TransferLog と CustomLog命令は要求されたログを
複数のファイルに出力できます。
各々の要求はこれらの命令で定義できます。
CookieLog命令はクッキーのログファイル名を指定します。実ファイルはファイル名に
最初の項目はログを行うファイル名です。
これはちょうどTransferLogと同じで、
フルパスか、対象のサーバのルートからの相対パスで指定します。
このフォーマットの定義が、ログファイルの全ての行のフォーマットを決定します。フォーマットに対し指定できるオプションは、LogFormat命令での法則と全く同じです。もしフォーマットがスペースを含んでいるならば、(おそらく、ほとんど全ての場合でそうでしょうが、)スペースをダブルクオーテーションで囲まなければなりません。
現行のログの書式の変わりに、LogFormat命令で定義されているnicknameのフォーマットを使用することができます。
TransferLog命令によって名付けられたデフォルトのログファイル名のフォーマットを指定します。フォーマットの法則についての詳細は、Custom Log Formatsの項目を参照してください。
この項目の設定でnicknameを使用しているのであれば、全てのフォーマットの書式を繰り返し書くのではなく、他のLogFormatとCustomLog命令の中でnicknameを使用した方がよいでしょう。
ニックネームを定義しているLogFormatは何の役にも立っていません。 -- それは単にニックネームを定義しただけであり、フォーマットを変更しその設定をデフォルトにすることではありません。
TransferLog 命令は、最も新しくLogFormat命令で定義されたフォーマットに基づいたログファイル、または、他に何のデフォルトフォーマットも定義されていなかった場合の共通のログフォーマット、に対して変更を加えます。
File-pipe は、以下のように指定します。
CustomLog
Syntax: CustomLog file-pipe
format-or-nickname
Context: server config, virtual host
Status: Base
Compatibility: NicknameはApache 1.3以降でのみ有効
Module: mod_log_config
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
Syntax: TransferLog file-pipe
Default: none
Context: server config, virtual host
Status: Base
Module: mod_log_config
セキュリティー: プログラムが使われるとき、それはhttpdをスタートさせたユーザーの権限で実行されます。サーバーを開始したのがrootであれば、プログラムもrootの権限で実行されるので、そのプログラムが安全なものかどうか確認するようにしてください。
Apache HTTP Server Version 1.3
The English original manual
is here.