5.2.3 NIO HTTPサーバのアクセスログの出力形式と出力項目
NIO HTTPサーバのアクセスログの出力形式と出力項目について説明します。
アクセスログには,NIO HTTPサーバのリクエストの処理結果が出力されます。NIO HTTPサーバで扱う,HTTP通信とWebSocket通信に分けて,それぞれの出力形式と出力項目について説明します。
- 〈この項の構成〉
(1) HTTP通信のアクセスログ
出力内容を次の表に示します。
フォーマット引数 |
出力内容 |
出力例 |
---|---|---|
%a |
WebクライアントのIPアドレス。 |
10.20.30.40 |
%A |
J2EEサーバのIPアドレス。 |
10.20.30.100 |
%b |
HTTPヘッダを除く送信バイト数。 0バイトのときは「-」になる。 |
2048 |
%B |
HTTPヘッダを除く送信バイト数。 0バイトのときは「0」になる。 |
1024 |
%h |
Webクライアントのホスト名またはIPアドレス。 ホスト名が得られない場合はIPアドレスになる。 |
10.20.30.40 |
%H |
リクエストプロトコル。 |
HTTP/1.1 |
%l |
リモートログ名。 常に「-」になる※1。 |
- |
%m |
リクエストメソッド |
GET |
%p |
Webクライアントからのリクエストを受け付けたポート番号。 |
80 |
%q |
クエリ文字列。 「?」から始まる。 クエリ文字列がない場合は空文字になる。 |
?id=100&page=15 |
%r |
リクエストライン。 |
GET /index.html HTTP/1.0 |
%s |
最終ステータスコード。 |
200 |
%S※2 |
クッキー名JSESSIONIDの値を出力する。 クッキー名JSESSIONIDの値がない場合は「-」になる。 |
00455AFE4DA4E7B7789F247B8FE5D605 |
%t |
Webクライアントのリクエスト処理を開始した時刻を秒精度で表示。 [dd/MMM/YYYY:HH:mm:ss Z] |
[18/Jan/2005:13:06:10 +0900] |
%T |
Webクライアントのリクエストの処理に要した時間(秒単位)。 |
2 |
%d |
Webクライアントのリクエスト処理を開始した時刻をミリ秒精度で表示。 [dd/MMM/YYYY:HH:mm:ss.nnn Z](nnnはミリ秒) |
[18/Jan/2005:13:06:10.152 +0900] |
%D |
Webクライアントのリクエストの処理に要した時間(ミリ秒単位)。 |
38 |
%u |
ベーシック認証ユーザ名,フォーム認証ユーザ名。 認証ユーザ名がない場合は「-」になる。 |
user |
%U |
リクエストファイルパス。 |
/index.html |
%v |
J2EEサーバのローカルホスト名。 |
server |
%{foo}i※3 |
リクエストヘッダfooの内容。 fooヘッダが存在しない場合は「-」になる。 |
%{Host}iの場合 www.example.com:8888 |
%{foo}c |
Webクライアントが送信したCookie情報でCookieの名前がfooの内容を表示する。 Cookieの名前にfooがない場合は「-」になる。 |
%{MYSESSIONID}cの場合 00455AFE4DA4E7B7789F247B8FE5D605 |
%{foo}o※3 |
レスポンスヘッダfooの内容。 fooヘッダが存在しない場合は「-」になる。 |
%{Server}oの場合 CosminexusComponentContainer |
%rootap |
ルートアプリケーション情報。 |
10.100.10.100/1234/0x0000000000000001 |
%clport |
Webクライアントからのリクエストを送信したポート番号。 |
888 |
- 注
-
-
上記の表以外の%から始まる文字(%Gなど)を指定した場合は,メッセージKDJE39401-Wを出力し,デフォルトフォーマットを使用します。また,%{foo}i,%{foo}c,%{foo}oで指定するヘッダの内容,またはCookie名で0文字(%{}iなど)を指定した場合は,メッセージKDJE39401-Wを出力し,デフォルトフォーマットを使用します。
-
フォーマット形式に使用できる文字列長は1024文字までです。1024文字を超えた場合は,メッセージKDJE39400-Wを出力しデフォルト値を使用します。
-
フォーマット形式に使用できる文字は,ASCIIコードの32(10進数)から127(10進数)未満の文字です。
-
文字列が何も指定されていない場合は,メッセージKDJE39009-Wを出力し,デフォルト値を使用します。
-
範囲外の文字を指定した場合は,メッセージKDJE39401-Wを出力しデフォルト値を使用します。
-
- 注※1
-
リモートログ名は,RFC1413で規定されているIdentificationプロトコルによって得られるWebクライアント側のユーザ名です。
- 注※2
-
%Sで表示される値は,標準でHTTPセッションIDとして使用するクッキー名JSESSIONIDの値です。Servlet3.0以降でクッキー名JSESSIONIDの名前を変更した場合は,%{foo}cを使用します。
- 注※3
-
一度のHTTPリクエストまたはHTTPレスポンスで同じヘッダ名を複数回送信する場合があります。この場合,すべてのヘッダの内容を「,」(コンマ)区切りで出力します。
フォーマット引数で記述した表記を次に示します。
%h %{X-Forwarded-For}i %l %u %d %rootap "%r" %s %b %D %S
出力形式を次に示します。
Webクライアントのホスト名またはIPアドレス△X-Forwarded-Forヘッダ△リモートログ名△認証ユーザ名△Webクライアントのリクエスト処理を開始した時刻△ルートアプリケーション情報△”リクエストライン”△最終ステータスコード△HTTPヘッダを除く送信バイト数△Webクライアントのリクエストの処理に要した時間△HTTPセッションID |
出力例を次に示します。
10.20.30.40 50.60.70.80 - user [18/Jan/2005:13:06:10.152 +0900] 10.100.10.100/1234/0x0000000000000001 "GET /index.html HTTP/1.0" 200 1024 38 00455AFE4DA4E7B7789F247B8FE5D605
(2) WebSocket通信のアクセスログ
出力内容を次の表に示します。
フォーマット引数 |
出力内容 |
出力例 |
---|---|---|
%TS |
WebSocketフレームの送受信時刻。 |
2001/01/01 01:01:01.111 +0900 |
%IO |
WebSocketフレームの送受信方向。INまたはOUTが出力される。
|
IN |
%OPCODE |
WebSocketフレームの種別。Text,Binary,Ping,Pong,またはCloseが出力される。 |
Text |
%URI |
リクエストURI。 |
/websocket_server/test001 |
%FIN |
WebSocketフレームの終端を示す識別子。CONTまたはFINALが出力される。
|
CONT |
%PAYLOADDATALEN |
ペイロードデータ長。 |
100 |
%ROOTAP |
ルートアプリケーション情報。 |
10.100.10.100/1234/0x0000000000000001 |
%CLIENTAP |
クライアントアプリケーション情報。 |
10.100.10.100/1234/0x0000000000000001 |
%CLOSEREASON |
WebSocketコネクションが切断された理由。 |
NORMAL_CLOSURE:closereason specified by WebSocketClient001 |
%CLIENTADDR |
WebクライアントのIPアドレスとポート番号。 |
10.20.30.40:55555 |
%SERVERADDR |
J2EEサーバのIPアドレスとポート番号。 |
10.20.30.100:44444 |
%SESSIONID |
WebSocketセッションID。 |
11111111-2222-3333-4444-555555555555 |
%MASK |
WebSocketフレームの情報に設定されたMASKを表す。
|
MASK |
%MASKKEY |
WebSocketフレームの情報をMASKするためのキー。 MASKしない場合は「-」になる。 |
EEEEEEEE |
%ISEXTENDED |
エンドポイントがメッセージの送受信に設定されたフレームを表す。
|
BASE |
%RSV |
拡張のネゴシエーション中にクライアントエンドポイントによって設定された予約ビットを表す。 |
RSV-000 |
%FRAMEMAINTYPE |
WebSocketフレームがデータフレームかコントロールフレームかを指定する。
|
Data |
%PAYLOADDATA |
ペイロードデータ。 |
aaaaaa |
%PAYLOADDATA(n) |
メッセージの最初と最後を示す一定数の文字だけを表示する場合のペイロードデータ。 バイナリの場合は常に「-」になる。 |
aaaaaaaaaa....aaaaaaaaaa |
- 注
-
-
フォーマット形式に使用できる文字列長は1024文字までです。1024文字を超えた場合は,メッセージKDJE39400-Wを出力しデフォルト値を使用します。
-
文字列が何も指定されていない場合は,メッセージKDJE39009-Wを出力し,デフォルト値を使用します。
-
表内で定義されているフォーマット引数を半角スペースでつなげたものだけ指定できます。その際,次の点に注意してください。
・半角スペースの個数は保持されません。
・先頭,末尾のスペースは保持されません。
・フォーマット引数の順序に制限はありません。
・出現回数(同じものを複数回使用するなど)に制限があり,同じフォーマット引数を繰り返し定義した場合,初めに定義したフォーマット引数だけが有効になります。二つ目以降で定義したフォーマット引数は有効になりません。
-
フォーマット引数で記述した表記を次に示します。
%TS %IO %OPCODE %ROOTAP %URI %FIN %PAYLOADDATALEN %CLIENTAP %CLOSEREASON
出力形式を次に示します。
WebSocketフレームの送受信時刻△WebSocketフレームの送受信方向△WebSocketフレームの種別△ルートアプリケーション情報△リクエストURI△WebSocketフレームの終端を示す識別子△ペイロードデータ長△クライアントアプリケーション情報△WebSocketコネクションが切断された理由 |
出力例を次に示します。
2001/01/01 01:01:01.111 +0900 IN Text10.100.10.100/1234/0x0000000000000001 /websocket_server/test001 CONT 100 10.100.10.100/1234/0x0000000000000003 -