Apacheログの設定方法

Apacheのログは
/etc/httpd/conf/httpd.conf
を編集して設定します。

通常ログ

デフォルトでは以下の4つのフォーマットが準備されています。

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  ←クライアントのブラウザやOS の情報を取得
LogFormat “%{User-agent}i” agent ←どのURLから来たかを取得するリファラーを指定する場合には、%{Referer}i

CustomLog [出力先][フォーマット]
で出力先と、出力内容を設定します。
CustomLog logs/access_log combined

LogFormatでカスタマイズする

LogFormatで使用できる主な変数は以下の通りです。

%a リモートIPアドレス
%A ローカルIPアドレス
%B HTTPヘッダを除いた転送バイト数
%b HTTPヘッダを除いた転送バイト数。転送バイト数が0の場合は – が記述されます。
%h リクエストしたリモートホスト名
%H リクエストされたプロトコル
%l identによるリモート・ユーザ名
%t リクエストを受けた時刻
%r HTTPリクエストヘッダー
%s サーバーがリクエストに対して返したステータスコード。%>s と記述することで最後のリクエストを記します。
%U リクエストされたURL
%u 認証に使用されたリモートユーザー名
%v リクエストを処理するサーバー名
%V UseCanonicalNameディレクティブの設定に応じたサーバー名

出力例は以下の通りです。

%f /var/www/html/dir/test.php
%H HTTP/1.1
%I 350
%l –
%m POST
%q [blank]
%r POST /var/www/html/dir/test.php HTTP/1.1
%s 200
%u testid
%U /var/www/html/dir/test.php
%v localhost.localdomain
%V 192.168.1.10
%X –
%{Authorization}o –
%{Authorization}i Basic [ベーシック認証のid:passのBASE64の値]
%{Basic}o –
%{Basic}i –
%>s 200
%b 159

除外する

全てを出力すれば、障害時の切り分けが困難になりかねません。
そのような場合は除外する設定を追加します。
SetEnvIfで除外対象を設定し、
CustomLogの最後にenv=!nolog
を追加します。
以下の場合はURLにtestが含まれるアクセスのログを除外します。
SetEnvIf Request_URI test no_log
CustomLog logs/error_log api_error_log env=!no_log

エラーログ

エラーログは出力したいレベルと、出力先を設定します。
#debug, info, notice, warn, error, crit ,alert, emerg.
ErrorLog logs/error_log
LogLevel warn

タイトルとURLをコピーしました