クラス AbstractRequestLoggingFilter
- 実装済みのインターフェース一覧:
jakarta.servlet.Filter, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, EnvironmentCapable, ServletContextAware
Filter の基本クラス。 サブクラスは、beforeRequest(HttpServletRequest, String) メソッドと afterRequest(HttpServletRequest, String) メソッドをオーバーライドして、リクエストに関する実際のロギングを実行する必要があります。
サブクラスには、beforeRequest および afterRequest メソッドでログに書き込むメッセージが渡されます。デフォルトでは、リクエストの URI のみがログに記録されます。ただし、includeQueryString プロパティを true に設定すると、リクエストのクエリ文字列も含まれます。これは、includeClientInfo および includeHeaders によってさらに拡張できます。リクエストのペイロード(ボディコンテンツ)は、includePayload フラグを介してログに記録できます。これは、実際に読み取られたペイロードの一部のみをログに記録することに注意してください。必ずしもリクエストのボディ全体ではありません。
変更前および変更後のメッセージのプレフィックスとサフィックスは、beforeMessagePrefix、afterMessagePrefix、beforeMessageSuffix、afterMessageSuffix プロパティを使用して構成できます。
- 導入:
- 1.2.5
- 作成者:
- Rob Harrop, Juergen Hoeller, Rossen Stoyanchev
- 関連事項:
フィールド概要
フィールド修飾子と型フィールド説明static final StringSEリクエストの処理後に書き込まれるログメッセージの前に付加されるデフォルト値。static final StringSEリクエストの処理後に書き込まれるログメッセージに追加されるデフォルト値。static final StringSEリクエストが処理される前に書き込まれるログメッセージに付加されるデフォルト値。static final StringSEリクエストが処理される前に書き込まれるログメッセージに追加されるデフォルト値。クラス OncePerRequestFilter から継承されたフィールド
ALREADY_FILTERED_SUFFIXクラス GenericFilterBean から継承されたフィールド
loggerコンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明protected abstract voidafterRequest(jakarta.servlet.http.HttpServletRequest request, StringSE message) 具象サブクラスは、このメソッドを実装して、リクエストの処理後にログメッセージを書き込む必要があります。protected abstract voidbeforeRequest(jakarta.servlet.http.HttpServletRequest request, StringSE message) 具象サブクラスはこのメソッドを実装して、リクエストが処理される前にログメッセージを書き込む必要があります。protected StringSEcreateMessage(jakarta.servlet.http.HttpServletRequest request, StringSE prefix, StringSE suffix) 指定されたリクエスト、プレフィックス、サフィックスのログメッセージを作成します。protected voiddoFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) リクエストをチェーンの次のフィルターに転送し、サブクラスに委譲して、リクエストが処理される前と後の両方で実際のリクエストロギングを実行します。protected @Nullable PredicateSE<StringSE> 構成されたheaderPredicate。protected intログメッセージに含まれるペイロードボディの最大長を返します。getMessagePayload(jakarta.servlet.http.HttpServletRequest request) isIncludePayload()が true を返す場合、createMessage(HttpServletRequest, String, String)によって作成されたメッセージのメッセージペイロード部分を抽出します。protected @Nullable PredicateSE<StringSE> 構成されたqueryParamPredicate。protected booleanクライアントアドレスとセッション ID をログメッセージに含めるかどうかを返します。protected booleanリクエストヘッダーをログメッセージに含めるかどうかを返します。protected booleanリクエストのペイロード(ボディ)をログメッセージに含めるかどうかを返します。protected booleanクエリ文字列をログメッセージに含めるかどうかを返します。voidsetAfterMessagePrefix(StringSE afterMessagePrefix) リクエストの処理後に書き込まれるログメッセージに付加する必要がある値を設定します。voidsetAfterMessageSuffix(StringSE afterMessageSuffix) リクエストの処理後に書き込まれるログメッセージに追加する値を設定します。voidsetBeforeMessagePrefix(StringSE beforeMessagePrefix) リクエストが処理される前に書き込まれるログメッセージに付加する必要がある値を設定します。voidsetBeforeMessageSuffix(StringSE beforeMessageSuffix) リクエストが処理される前に書き込まれるログメッセージに追加する必要がある値を設定します。voidsetHeaderPredicate(@Nullable PredicateSE<StringSE> headerPredicate) setIncludeHeaders(boolean)がtrueに設定されている場合、ログに記録するヘッダーを選択するための述語を構成します。voidsetIncludeClientInfo(boolean includeClientInfo) クライアントアドレスとセッション ID をログメッセージに含めるかどうかを設定します。voidsetIncludeHeaders(boolean includeHeaders) リクエストヘッダーをログメッセージに含めるかどうかを設定します。voidsetIncludePayload(boolean includePayload) リクエストのペイロード(ボディ)をログメッセージに含めるかどうかを設定します。voidsetIncludeQueryString(boolean includeQueryString) クエリ文字列をログメッセージに含めるかどうかを設定します。voidsetMaxPayloadLength(int maxPayloadLength) ログメッセージに含まれるペイロードボディの最大長を設定します。voidsetQueryParamPredicate(@Nullable PredicateSE<StringSE> queryParamPredicate) setIncludeQueryString(boolean)がtrueに設定されている場合に、ログに記録するクエリパラメーターを選択するための述語を構成します。protected booleanshouldLog(jakarta.servlet.http.HttpServletRequest request) 現在のリクエストに対してbeforeRequest(HttpServletRequest, String)/afterRequest(HttpServletRequest, String)メソッドを呼び出すかどうかを決定します。protected booleanデフォルト値は "false" で、リクエスト処理の開始時に "before" メッセージがログに記録され、最後に非同期にディスパッチされたスレッドが終了したときから最後に "after" メッセージがログに記録されます。クラス OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterErrorDispatch
フィールドの詳細
DEFAULT_BEFORE_MESSAGE_PREFIX
リクエストが処理される前に書き込まれるログメッセージに付加されるデフォルト値。- 関連事項:
DEFAULT_BEFORE_MESSAGE_SUFFIX
リクエストが処理される前に書き込まれるログメッセージに追加されるデフォルト値。- 関連事項:
DEFAULT_AFTER_MESSAGE_PREFIX
リクエストの処理後に書き込まれるログメッセージの前に付加されるデフォルト値。- 関連事項:
DEFAULT_AFTER_MESSAGE_SUFFIX
リクエストの処理後に書き込まれるログメッセージに追加されるデフォルト値。- 関連事項:
コンストラクターの詳細
AbstractRequestLoggingFilter
public AbstractRequestLoggingFilter()
方法の詳細
setIncludeQueryString
public void setIncludeQueryString(boolean includeQueryString) クエリ文字列をログメッセージに含めるかどうかを設定します。web.xmlのフィルター定義で、パラメーター名 "includeQueryString" に<init-param>を使用して構成する必要があります。isIncludeQueryString
protected boolean isIncludeQueryString()クエリ文字列をログメッセージに含めるかどうかを返します。setIncludeClientInfo
public void setIncludeClientInfo(boolean includeClientInfo) クライアントアドレスとセッション ID をログメッセージに含めるかどうかを設定します。web.xmlのフィルター定義で、パラメーター名 "includeClientInfo" に<init-param>を使用して構成する必要があります。isIncludeClientInfo
protected boolean isIncludeClientInfo()クライアントアドレスとセッション ID をログメッセージに含めるかどうかを返します。setIncludeHeaders
public void setIncludeHeaders(boolean includeHeaders) リクエストヘッダーをログメッセージに含めるかどうかを設定します。web.xmlのフィルター定義で、パラメーター名 "includeHeaders" に<init-param>を使用して構成する必要があります。- 導入:
- 4.3
isIncludeHeaders
protected boolean isIncludeHeaders()リクエストヘッダーをログメッセージに含めるかどうかを返します。- 導入:
- 4.3
setIncludePayload
public void setIncludePayload(boolean includePayload) リクエストのペイロード(ボディ)をログメッセージに含めるかどうかを設定します。web.xmlのフィルター定義で、パラメーター名 "includePayload" に<init-param>を使用して構成する必要があります。- 導入:
- 3.0
isIncludePayload
protected boolean isIncludePayload()リクエストのペイロード(ボディ)をログメッセージに含めるかどうかを返します。- 導入:
- 3.0
setQueryParamPredicate
setIncludeQueryString(boolean)がtrueに設定されている場合に、ログに記録するクエリパラメーターを選択するための述語を構成します。デフォルトではこれは設定されておらず、その場合、すべてのクエリパラメーターがログに記録されます。
述語はクエリパラメーター名ごとに 1 回適用されます。同じクエリパラメーター名に複数の値がある場合、ログに記録されるクエリ文字列には、
HttpServletRequest.getQueryString()によって返されるものよりもname=valueマッピングが少なくなります。- パラメーター:
queryParamPredicate- 使用する述語- 導入:
- 7.0
getQueryParamPredicate
構成されたqueryParamPredicate。- 導入:
- 7.0
setHeaderPredicate
setIncludeHeaders(boolean)がtrueに設定されている場合、ログに記録するヘッダーを選択するための述語を構成します。デフォルトではこれは設定されておらず、その場合すべてのヘッダーがログに記録されます。
- パラメーター:
headerPredicate- 使用する述語- 導入:
- 5.2
getHeaderPredicate
setMaxPayloadLength
public void setMaxPayloadLength(int maxPayloadLength) ログメッセージに含まれるペイロードボディの最大長を設定します。デフォルトは 50 文字です。- 導入:
- 3.0
getMaxPayloadLength
protected int getMaxPayloadLength()ログメッセージに含まれるペイロードボディの最大長を返します。- 導入:
- 3.0
setBeforeMessagePrefix
リクエストが処理される前に書き込まれるログメッセージに付加する必要がある値を設定します。setBeforeMessageSuffix
リクエストが処理される前に書き込まれるログメッセージに追加する必要がある値を設定します。setAfterMessagePrefix
リクエストの処理後に書き込まれるログメッセージに付加する必要がある値を設定します。setAfterMessageSuffix
リクエストの処理後に書き込まれるログメッセージに追加する値を設定します。shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()デフォルト値は "false" で、リクエスト処理の開始時に "before" メッセージがログに記録され、最後に非同期にディスパッチされたスレッドが終了したときから最後に "after" メッセージがログに記録されます。- オーバーライド:
- クラス
OncePerRequestFilterのshouldNotFilterAsyncDispatch
doFilterInternal
protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE リクエストをチェーンの次のフィルターに転送し、サブクラスに委譲して、リクエストが処理される前と後の両方で実際のリクエストロギングを実行します。- 次で指定:
- クラス
OncePerRequestFilterのdoFilterInternal - 例外:
jakarta.servlet.ServletExceptionIOExceptionSE- 関連事項:
createMessage
protected StringSE createMessage(jakarta.servlet.http.HttpServletRequest request, StringSE prefix, StringSE suffix) 指定されたリクエスト、プレフィックス、サフィックスのログメッセージを作成します。includeQueryStringがtrueの場合、ログメッセージの内部はrequest_uri?query_stringの形式になります。それ以外の場合、メッセージは単にrequest_uriの形式になります。最後のメッセージは、説明されている内部部分と、指定されたプレフィックスおよびサフィックスで構成されます。
getMessagePayload
isIncludePayload()が true を返す場合、createMessage(HttpServletRequest, String, String)によって作成されたメッセージのメッセージペイロード部分を抽出します。- 導入:
- 5.0.3
shouldLog
protected boolean shouldLog(jakarta.servlet.http.HttpServletRequest request) 現在のリクエストに対してbeforeRequest(HttpServletRequest, String)/afterRequest(HttpServletRequest, String)メソッドを呼び出すかどうか、つまり、ロギングが現在アクティブになっているかどうか(およびログメッセージを作成する価値があるかどうか)を決定します。デフォルトの実装は、常に
trueを返します。サブクラスは、ログレベルチェックでこれをオーバーライドできます。- パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- before/after メソッドが呼び出される場合は
true。それ以外の場合はfalse - 導入:
- 4.1.5
beforeRequest
protected abstract void beforeRequest(jakarta.servlet.http.HttpServletRequest request, StringSE message) 具象サブクラスはこのメソッドを実装して、リクエストが処理される前にログメッセージを書き込む必要があります。- パラメーター:
request- 現在の HTTP リクエストmessage- 記録するメッセージ
afterRequest
protected abstract void afterRequest(jakarta.servlet.http.HttpServletRequest request, StringSE message) 具象サブクラスは、このメソッドを実装して、リクエストの処理後にログメッセージを書き込む必要があります。- パラメーター:
request- 現在の HTTP リクエストmessage- 記録するメッセージ