GCS Amplitude
GCS Amplitude

Apache モジュール mod_log_config

CustomLog with format nickname

CustomLog with explicit format string

このモジュールはクライアントのリクエストを柔軟にログ収集する機能を 提供します。ログはカスタマイズ可能な書式で書かれ、ファイルに直接 書いたり、外部プログラムに渡したりすることができます。個々のリクエストを 特徴に応じてログに書いたり書かなかったりできるように、条件による ログ収集も提供されています。

" ディレクティブを書式の文字列に書くことで ログ収集されます。"%" ディレクティブはログファイル中では以下のような 値で置換されます:

特定の要素は "%" の直後に HTTP ステータスコードをカンマ区切りで 指定することで、表示を制限することができます。例えば "%400,501{User-agent}i"

では、 400 と 500 番エラーでのみ User-agent

" で否定を指定することができます : "%!200,304,302{Referer}i"

は、指定された 3 つのコードのどれにも該当しないリクエスト全てで Referer

修飾子 "<" と ">" は内部リダイレクトされたリクエストのログに 元のリクエストか最終的なリクエストのどちらを使用するかを 指定するために使います。デフォルトでは、%

ディレクティブの %s, %U, %T, %D, %r

は元のリクエストを、他は最終的なリクエストを 使用します。例えば、リクエストの最終ステータスを記録するには %>s

を、内部的に認証されていないリソースへリダイレクトされた リクエストで元のリクエストで認証されたユーザを記録するためには %

という形式の文字列でエスケープされるようになりました。hhhh は そのままのバイトの値の 16 進での値です。この規則の例外には、 バックスラッシュを使ってエスケープされる "

など) があります。2.0.46 以前のバージョンではエスケープ処理は行われませんので、 生ログファイルを扱う際に注意が必要です。

httpd 2.0 では 1.3 とは異なり、%b

フォーマット文字列はクライアントに送信されたバイト数そのものではなく、 HTTP レスポンスのバイト数です (これらは異なるもので、たとえば、 コネクションが途中で破棄された場合や、SSL 使用時に一致しません) 。

"%v %h %l %u %t \"%r\" %>s %b"

CustomLog file|pipe format|nickname [env=[!]environment-variable]

" と、その後に標準入力からログの 情報を受けとるプログラムへのパスが続いたもの。 もしプログラムが使用された場合、

が起動されたユーザとして実行されます。これはサーバが root によって起動された場合は root になります。プログラムが 安全であるように留意してください。httpd

Unix でないプラットフォームでファイルのパスを入力しているときは、 使用しているプラットフォームがバックスラッシュの使用を許可していた として、通常のスラッシュだけを使うように気をつけてください。 一般的に、設定ファイル中では常に普通のスラッシュのみを使うようにする 方が良いです。

ディレクティブにより 定義された LogFormatnickname か、ログの書式 のところで説明されている、明示的な format 文字列の どちらかを指定することができます。

CustomLog logs/access_log common

三つ目の引数は省略可能で、サーバの環境にある変数があるかないかに 応じてリクエストをログ収集するかどうかを制御するために使うことができます。 指定された環境変数がリクエストに対して 設定されていた場合 ('env=!

' 文が使われたときは 設定されていない場合)、リクエストがログ収集されます。name

モジュールの両方もしくは 片方を用いてリクエストごとに設定することができます。 例えば、サーバにあるすべての GIF 画像へのリクエストを別のログファイル には記録したいけれど、メインログには記録したくない、というときは 以下のものを使うことができます:mod_rewrite

SetEnvIf Request_URI \.gif$ gif-image

CustomLog nongif-requests.log common env=!gif-image

古い RefererIgnore ディレクティブと同じ挙動をさせたい場合は、 次のようにします:

SetEnvIf Referer example\.com localreferer

ディレクティブは二つの形式のどちらかを とることができます。最初の形式では一つの引数のみが指定され、 続く TransferLog

で指定されたログで使われるログの書式を設定します。この単独の引数では 上のカスタムログ書式で説明されているように format を明示的に指定することができます。 もしくは、下で説明されているように前に LogFormat

ディレクティブの二つめの形式は format に nickname を与えます。 フォーマット文字列全体を再び書くかわりに、 この nickname を続きの LogFormat

ディレクティブで使うことができます。 Nickname を定義する LogFormat

ディレクティブは 他には何もしません -- すなわち、ニックネームを定義 するだけで、実際に書式を適用してデフォルトにするということは行ないません。 ですから、これは続く

ディレクティブは既存の nickname を 使って別の nickname を定義することはできません。Nickname には パーセント記号 (%

モジュール | ディレクティブ | FAQ | 用語 | サイトマップ

Apache HTTP サーバ バージョン 2.4

Apache モジュール mod_log_config

翻訳済み言語: en | fr | ja | ko | tr

カスタムログ書式

LogFormat ディレクティブと CustomLog ディレクティブの書式を指定する引数は文字列です。この文字列を使ってそれぞれの リクエストがログファイルにログ収集されます。その文字列には ログファイルにそのまま 書かれる文字列や、それぞれ改行とタブを表す C 言語 形式の制御文字 "\n" と "\t" とを含めることができます。そのまま出力させたい引用符とバックスラッシュは バックスラッシュでエスケープする必要があります。

セキュリティに関して

ログファイルが保存されているディレクトリがサーバを起動した以外のユーザで 書き込み可能なときにセキュリティの問題が発生する理由の詳細はセキュリティのこつ を参照してください。

BufferedLogs ディレクティブ

BufferedLogs ディレクティブを使うと mod_log_config の挙動が変化して、 複数のログを書き出す際に、それぞれのリクエスト処理後毎に 書き出すのではなく、いったんメモリに蓄えてから、 まとめてディスクに書き出すようになります。 この結果ディスクアクセスがより効率的になり、 高いパフォーマンスの得られるシステムもあるでしょう。 このディレクティブはサーバ全体で一度だけ設定できます; バーチャルホストごとに設定することはできません。

CustomLog ディレクティブ

CustomLog ディレクティブはサーバへのリクエストを ログ収集するために使われます。ログの書式が指定され、 環境変数を使ってロギングが条件に応じて行なわれるようにすることもできます。

LogFormat ディレクティブ

このディレクティブはアクセスログファイルの書式を指定します。

TransferLog ディレクティブ

このディレクティブは、ログ書式を直接指定できないことと、 条件付きロギングが無いことを除くと、CustomLog と全く同じ引数と効果があります。 直接ログ書式を指定する代わりに、ログの書式はそこまでで一番最後に指定された ニックネームを定義しない LogFormat ディレクティブ で定義されたものを使います。 もし他の書式が全く指定されていないときは Common Log Format が使われます。