mod_log_config モジュールを使用すると Apache が出力するアクセスログを任意のフォーマットにカスタマイズすることができます。/etc/httpd/conf/modules には以下の記述があり、mod_log_config はデフォルトで読み込まれています。
LoadModule log_config_module /usr/lib/httpd/modules/mod_log_config.so |
mod_log_config の関連ディレクティブは以下の通りです。
ログファイルに、クライアントのホスト名を記録するか IP アドレスを記録するかを指定します。ホスト名で記録する場合は On、IP アドレスで記録する場合は Off を指定します。通常は初期値のまま Off に設定することを推奨します。On や Double を指定すると名前解決に DNS 参照を行うため、パフォーマンスが低下する可能性があります。Double は、逆引きで得た結果のホスト名を更に DNS に問い合わせ、リクエストの IP アドレスとマッチするかどうかを照合します。
ログのフォーマットとそのニックネームを対応付けます。このディレクティブは、後述する CustomLog ディレクティブでログのフォーマットをニックネームで指定できるようにするためのものです。主にフォーマットには、%h(ホスト名または IP アドレス)、%l(クライアントのユーザー名)、%u(ユーザー認証のユーザー名)、%t(アクセスされた時刻)、%r(HTTP リクエスト)、%>s(リダイレクト後のサーバーステータスコード)、%b(送信バイト数)、%{<HTTP ヘッダ}i(サーバーに送られたクライアントの HTTP ヘッダ)などの指定が可能です。詳細は Apache のオンラインマニュアルを参照してください。
Turbolinux 10 Server の httpd.conf には初期状態で以下のログフォーマットが指定されています。例えば、ニックネーム common の指定は、CLF(Common Log Format)という一般的なログ解析用のツールで使用できるフォーマットになっています。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent |
ログのフォーマットとそれを出力するファイルを対応付けます。pipe を指定した場合には、| に続くパスにログ出力結果を渡します。LogFormat ディレクティブでニックネームを設定した場合は、ニックネームで指定することができますが、LogFormat ディレクティブで設定していない場合は、直接フォーマットの形式を同様に指定します。また、env=[!]environment-variable を定義することで、SetEnvIf ディレクティブによってセットされた環境変数にマッチする場合(! 指定はマッチしない場合)にログ出力するといった指定も可能です。
以下のように指定されているとき LogFormat で指定された combined というニックネームのログフォーマットで、サーバールート下に logs/access_log が出力されます。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined |
以下のように指定をした場合も同様です。
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" |
エラーログを出力するには、以下のディレクティブを使用することができます。
エラーメッセージをログとして残す出力先を指定します。file-path を指定した場合は指定したファイルに出力します。Turbolinux 10 Server の初期値は logs/error_log で、サーバールート下に logs/error_log ファイルが出力されます。syslog[:facility] を指定すると syslogd にログ出力することができます。ファシリティを省略した場合は、local7 が使用されます。
ログファイルに出力するエラーのプライオリティを指定します。プライオリティは重要度(緊急度)の高い順に、emerg、alert、crit、error、warn、notice、info、debug の 8 つがあります。初期値は、warn です。
![]() | Turbolinux 10 Server の /etc/httpd/conf/httpd.conf でアクセスログとエラーログの出力先に指定されている /etc/httpd/logs/ は、/var/log/httpd/ へのシンボリックリンクになっています。 |
![]() | Apache2.0 では、Agent ログと referer ログを出力するための AgentLog ディレクティブ、RefererLog ディレクティブ、RefererIgnore ディレクティブ(提供する mod_log_agent と mod_log_referer モジュール)は削除されていますので、CustomLog ディレクティブで指定します。 |