15.9 HTTPリクエストのトレース
HTTPリクエストのトレース情報が取得されます。HTTPリクエストのトレースの一覧を次の表に示します。
なお,Spring WebFluxを使用する場合,次のトレースは取得されません。
-
0xe231(HTTPレスポンスを送信する直前(トレース2))
-
0xe240(最初のサーブレットまたはフィルタを呼び出す直前(トレース3))
-
0xe241(最後のサーブレットの処理,または最初のフィルタの処理が完了した直後(トレース4))
-
0xe332(org.springframework.web.servlet.DispatcherServletによってHandlerを実行するとき(トレース7))
-
0xe333(org.springframework.web.servlet.DispatcherServletによってHandlerを実行したあと(トレース8))
-
0xe334(org.springframework.web.servlet.DispatcherServletによってViewレンダリングしたあと(トレース9))
-
0xe335(org.springframework.web.servlet.DispatcherServletによって非同期HTTPリクエスト処理を開始したあと(トレース10))
表15‒7 HTTPリクエストのトレースの一覧 シーケンス図との対応
イベントID
トレース取得ポイント
取得レベル
リターンコード(Rc)
インターフェイス名(INT)
オペレーション情報(OPR)
トレース1
0xe230
HTTPリクエストを受信した直後
FINE
0
HTTPメソッド
リクエストURI※3
トレース2
0xe231
HTTPレスポンスを送信する直前
FINE
-
ステータスコードが400未満の場合:0
-
ステータスコードが400以上の場合:1
HTTPメソッド
リクエストURI※3
トレース3
0xe240
最初のサーブレットまたはフィルタを呼び出す直前※1
FINER
0
サーブレット・フィルタ名※2
リクエストURI※3
トレース4
0xe241
最後のサーブレットの処理,または最初のフィルタの処理が完了した直後※1
FINER
-
正常リターンの場合:0
-
例外リターンの場合:1
サーブレット・フィルタ名※2
リクエストURI※3
トレース5
0xe330
javax.servlet.Filterまたはorg.springframework.web.server.WebFilterを最初に呼び出す直前
FINE
0
HTTPメソッド
リクエストURI※3
トレース6
0xe331
最初に呼び出したjavax.servlet.Filterまたはorg.springframework.web.server.WebFilterが完了した直後
FINE
-
正常リターンの場合:0
-
例外リターンの場合:1
-
キャンセルの場合:2※5
HTTPメソッド
リクエストURI※3
トレース7
0xe332
org.springframework.web.servlet.DispatcherServletによってHandlerを実行する前
FINER
0
Handlerクラス名
-
トレース8
0xe333
org.springframework.web.servlet.DispatcherServletによってHandlerを実行したあと※4
FINER
0
Handlerクラス名
-
Viewが存在する場合:Viewクラス名
-
Viewが存在しない場合:空文字("")
トレース9
0xe334
org.springframework.web.servlet.DispatcherServletによってViewレンダリングしたあと
FINER
-
正常リターンの場合:0
-
例外リターンの場合:1
Handlerクラス名
-
正常リターンの場合:空文字("")
-
例外リターンの場合:例外クラス名
トレース10
0xe335
org.springframework.web.servlet.DispatcherServletによって非同期HTTPリクエスト処理を開始したあと
FINER
0
Handlerクラス名
-
- (凡例)
-
-:出力なし
- 注※1
-
1つのリクエストで複数のフィルタやサーブレットが呼び出される場合,最初に呼び出されるものだけがトレース取得の対象です。
- 注※2
-
Webアプリケーションデプロイ記述子に記載している場合は記載した名前が取得されます。記載していない場合は実装依存の名前が取得されます。
- 注※3
-
URIにパスワードなどの機密情報が含まれていないことを確認してください。リクエストURIにはパスだけが含まれます(スキームやホスト名は含まれません)。
- 注※4
-
Handler実行時に例外が発生した場合,0xe333は取得されません。
- 注※5
-
Spring WebFluxのキャンセル発生時に取得されます。なお,Spring MVCではキャンセルは発生しません。
-
0xe230を出力したタイミングで,javax.servlet.ServletRequestの属性に次の表に示すアプリケーション情報の文字列表現の値が格納されます。
|
javax.servlet.ServletRequestの属性名 |
格納されるアプリケーション情報の文字列表現の値 |
|---|---|
|
ucar.rootap |
ルートアプリケーション情報の文字列表現 |
|
ucar.clientap |
クライアントアプリケーション情報の文字列表現 |
アプリケーション情報の文字列表現とは,クライアントアプリケーション情報を構成するIPアドレス,プロセスID,および通信番号をスラッシュ(/)で区切ったものです。例を次に示します。
例:"10.209.15.130/1234/0x0000000000000001"
この値は,javax.servlet.ServletRequestのgetAttributeメソッドで取得したり,アクセスログの書式に「%{<属性名>}r」を指定することでアクセスログに記録したりできます。
トレース機能で取得された情報は,トレースログに出力されます。詳細は,「19.3.1 トレースログ」を参照してください。
HTTPリクエストのトレースのうち,0xe330-0xe335のトレースは,次の条件をすべて満たす場合だけ取得されます。
-
Spring Bootビルドツールで作成したアプリケーションを使用する
-
AutoConfigure機能が有効である
- トレース取得シーケンス
-
HTTPリクエストのトレース取得シーケンスを次の図に示します。なお,図中の番号(トレース1など)は,「表15-7 HTTPリクエストのトレースの一覧」と対応しています。
図15‒3 HTTPリクエストのトレース取得シーケンス(同期リクエスト)
(凡例)
:処理の流れ
|
|
(凡例)
:処理の流れ
|
|
(凡例)
:処理の流れ
AP情報:アプリケーション情報