ログフォーマット文字列
以下が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アドレス。HostnameLookups がOn に設定されている場合のみホスト名の解決を試みる |
%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