48
56

More than 5 years have passed since last update.

Apacheのログ出力の要点

Last updated at Posted at 2015-06-10

ログフォーマット文字列

以下がApacheのログフォーマットに使用する文字列です。
私個人が重要だと思う順で並べてます。

フォーマット文字列 意味
%t リクエスト時刻
%a リモートIPアドレス
%>s HTTPステータス
%D リクエスト処理にかかった時間(マイクロ秒)
%m リクエストメソッド
%U URLのパス部分。クエリ文字列は含まない
%q クエリストリング
%{Referer}i リファラ
%{User-Agent}i ユーザーエージェント
%{Foobar}i リクエスト中の*Foobar**ヘッダの内容。よく使うものは後述。
%{Foobar}C リクエスト中のFoobarクッキーの値
%I 受信バイト数(ヘッダ含む)。利用にはmod_logioが必要。l(エル)ではなくI(アイ)
%O 送信バイト数。利用にはmod_logioが必要
%b レスポンスのバイト数(HTTPヘッダは除く)。CLFフォーマット、つまり1バイトとも送られなかった場合は-になる
%B レスポンスのバイト数(HTTPヘッダは除く)。
%A ローカルIPアドレス
%f URLから導き出されたファイルシステム上のファイル名。このファイル名のファイルが存在するとは限らない。
%s HTTPステータス。内部でリダイレクトされた場合は最初のステータス
%{FOOBAR}e 環境変数FOOBARの値
%H リクエストプロトコル
%{Foobar}o レスポンス中のFoobarヘッダの内容
%p サーバーのポート
%P リクエストを処理した子プロセスのプロセスID
%{format}t リクエスト時刻(formatで指定した書式)
%T リクエスト処理にかかった時間(秒)
%v サーバー名(ServerName)
%V サーバー名(UseCanonicalNameの設定によるもの)
%l リモートログ名。mod_identを使っていない限り-になる。I(アイ)ではなくl(エル)。
%u Basic認証のユーザー名
%h クライアントのホスト名またはIPアドレス。HostnameLookupsOnに設定されている場合のみホスト名の解決を試みる
%r リクエストの最初の行
%X 応答が完了した時の接続ステータス。(X: 応答完了前に接続が異常終了、+: 応答完了後に接続維持が可能、-: 応答完了後に接続断)
%% パーセント文字

ログ設定方法

Apacheのログフォーマットはhttpd.confなどに以下のように予め何パターンか定義されています。

.conf
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

そして、サーバーの設定やバーチャルホストの設定で、以下のようにログのパスと使用するフォーマットを選びます。

CustomLog logs/access_log common

使用するログのフォーマットは自分で定義することができます。
httpd.confに以下のような行を追記するだけです。

LogFormat "%t %a %>s" ore_no_format

自分で定義したフォーマットを使用するのも、通常のフォーマット同様に以下のようにします。

CustomLog logs/access_log ore_no_format

combinedのログの出力例

202.241.168.146 - - [18/Jan/2015:03:10:20 +0900] "GET /images/logo.png HTTP/1.1" 404 313 "http://tech.artizan.co/index.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"

LTSVで出力する例

私がよく使うのは以下の様にLTSV形式のフォーマットです。
実際は改行はありません。

LogFormat "ts:%t\\t
ip:%a\\t
status:%>s\\t
method:%m\\t
path:%U\\t
query:%q\\t
referer:%{Referer}i\\t
ua:%{User-Agent}i\\t
usec:%D\\t
received:%I\\t
sent:%O" ltsv
48
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
56