HTTPアクセスログには、HTTPサービスの通信情報が出力されます。HTTPアクセスログは、設計通りにHTTPサービスで処理が実施されたかを確認するなどの用途のために、開発時およびテスト運用時の調査用として使用してください。
ファイル名
server_access_log.<サフィックス>.txt
ログファイルの出力先
domain.xmlに出力先ディレクトリーを指定します。設定方法については、「設定方法」を参照してください。
仕様
HTTPアクセスログは、Webコンテナへのリクエストに対する処理が完了したタイミングで出力されます。
HTTPアクセスログのディスクへの書き込みは、バッファーが満杯になるか、設定された時間に到達したタイミングで行われます。バッファーサイズ(buffer-size-bytes)とディスクに書き込むまでの時間(write-interval-seconds)の設定については、「7.1.4 HTTPサービスの定義項目」の「HTTPアクセスログ」を参照してください。
設定方法
HTTPアクセスログの設定は、domain.xmlにより変更可能です。
アクセスログの有効化
HTTPアクセスログの出力を有効にするかを指定します。詳細は、「7.1.4 HTTPサービスの定義項目」の「HTTPサービス」 を参照してください。
形式
HTTPアクセスログに出力する項目を指定します。詳細は「7.1.4 HTTPサービスの定義項目」の「HTTPアクセスログ」を参照してください。
ローテーションに関する設定
ローテーションの条件などを設定します。詳細は「7.1.4 HTTPサービスの定義項目」の「HTTPアクセスログ」を参照してください。
ログ出力ディレクトリー
ログファイルの出力先を変更できます。詳細は「7.1.4 HTTPサービスの定義項目」の「仮想サーバー」を参照してください。
例
HTTPアクセスログを有効化、ローテーションの世代数を1000、ログ出力ディレクトリーを「/var/log/launcher/access」に設定する場合のdomain.xmlの記載例です。
<http-service access-logging-enabled="true"> <access-log max-history-files="1000"/> <virtual-server access-log="/var/log/launcher/access" id="server" network-listeners="http-listener,https-listener"/> </http-service>
ローテーション
HTTPアクセスログのファイルはローテーションされます。
HTTPアクセスログのファイルは、一定の時間間隔(デフォルトでは1日間隔)でローテーションされます。起動時点または前回ローテーションした時点から、一定の時間間隔を経過したあとの最初のHTTPアクセスログ出力時にローテーションされます。時間間隔の設定については「7.1.4 HTTPサービスの定義項目」-「HTTPアクセスログ」のrotation-interval-in-minutes属性を参照してください。
HTTPアクセスログのファイル名は、ローテーションの実行時刻に基づいたサフィックスを付加した名前で保存されます。サフィックスの設定については「7.1.4 HTTPサービスの定義項目」-「HTTPアクセスログ」のrotation-suffix属性を参照してください。
server_access_log.<サフィックス>.txt
デフォルトの設定では、以下の形式の名前で保存されます。
server_access_log.yyyy-MM-dd.txt
出力フォーマット
HTTPアクセスログの出力フォーマットはカスタマイズできます。設定方法については、「設定方法」を参照してください。
出力フォーマットを指定するには、出力する項目を空白区切りで並べます。
出力フォーマットの初期値を以下に示します。
%client.name% %auth-user-name% %datetime% %request% %status% %response.length%
出力フォーマットに指定可能な項目を以下の表に示します。
項目名 | 説明 | デフォルト |
---|---|---|
%auth-user-name% | Webコンテナで認証したユーザー名を出力します。 リクエストにユーザー名が付与されていない場合は、“NULL-AUTH-USER”を出力します。 | ○ |
%client.name% | クライアントまたは、プロキシサーバーなどのIPアドレス/ホスト名を出力します。 | ○ |
%cookies.any% | Cookieヘッダーの内容を出力します。anyに指定する値は、大文字、小文字を区別するのでHTTP/1.1で定義された値を指定してください。 | |
%cookies.JSESSIONID% | セッションIDを出力します。 | |
%datetime% | ログを出力した時点の日時を出力します。 | ○ |
%headers.any% | リクエストHTTPヘッダーの値を出力します。anyには、HTTP/1.1で定義された任意の有効なリクエストHTTPヘッダーの値を小文字で指定します。 | |
%headers.host% | Hostヘッダーの内容を出力します。 | |
%headers.referer% | Refererヘッダーの内容を出力します。 | |
%headers.user-agent% | User-Agentヘッダーの内容を出力します。 | |
%http-method% | HTTPメソッドを出力します。 | |
%http-uri% | URIを出力します。 | |
%http-version% | プロトコルバージョンを出力します。 | |
%query-str% | クエリ文字列を出力します。 | |
%request% | リクエストラインの内容を出力します。 | ○ |
%response.headers.any% | レスポンスHTTPヘッダーの値を出力します。anyには、HTTP/1.1で定義された任意の有効なレスポンスHTTPヘッダーの値を小文字で指定します。 | |
%response.headers.set-cookie% | レスポンス時のSet-Cookieヘッダーの内容を出力します。 | |
%response.length% | レスポンスのデータ長を出力します。単位はbyteです。 | ○ |
%status% | ステータスコードを出力します。 | ○ |
%time-taken% | リクエストの処理開始から、Webアプリケーションの処理終了までの時間(ミリ秒)を出力します。 以下についても含みます。
HTTP/2のServer Pushのリクエストに対する%time-taken%の値は参照しないでください。 |
出力例
出力フォーマットに指定した値が空白で区切られて出力されます。一部の値はダブルクォーテーション(")で囲まれて出力されます。
"192.0.2.237" "NULL-AUTH-USER" "31/Jan/2022:12:00:00 +0900" "GET /foo HTTP/1.1" 200 256