public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
Filter
の基本クラス。 サブクラスは、beforeRequest(HttpServletRequest, String)
メソッドと afterRequest(HttpServletRequest, String)
メソッドをオーバーライドして、リクエストに関する実際のロギングを実行する必要があります。
サブクラスには、beforeRequest
および afterRequest
メソッドでログに書き込むメッセージが渡されます。デフォルトでは、リクエストの URI のみがログに記録されます。ただし、includeQueryString
プロパティを true
に設定すると、リクエストのクエリ文字列も含まれます。これは、includeClientInfo
および includeHeaders
によってさらに拡張できます。リクエストのペイロード(ボディコンテンツ)は、includePayload
フラグを介してログに記録できます。これは、実際に読み取られたペイロードの一部のみをログに記録することに注意してください。必ずしもリクエストのボディ全体ではありません。
変更前および変更後のメッセージのプレフィックスとサフィックスは、beforeMessagePrefix
、afterMessagePrefix
、beforeMessageSuffix
、afterMessageSuffix
プロパティを使用して構成できます。
beforeRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
, afterRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_AFTER_MESSAGE_PREFIX リクエストの処理後に書き込まれるログメッセージの前に付加されるデフォルト値。 |
static StringSE | DEFAULT_AFTER_MESSAGE_SUFFIX リクエストの処理後に書き込まれるログメッセージに追加されるデフォルト値。 |
static StringSE | DEFAULT_BEFORE_MESSAGE_PREFIX リクエストが処理される前に書き込まれるログメッセージに付加されるデフォルト値。 |
static StringSE | DEFAULT_BEFORE_MESSAGE_SUFFIX リクエストが処理される前に書き込まれるログメッセージに追加されるデフォルト値。 |
ALREADY_FILTERED_SUFFIX
logger
コンストラクターと説明 |
---|
AbstractRequestLoggingFilter() |
修飾子と型 | メソッドと説明 |
---|---|
protected abstract void | afterRequest(HttpServletRequestEE request, StringSE message) 具象サブクラスは、このメソッドを実装して、リクエストの処理後にログメッセージを書き込む必要があります。 |
protected abstract void | beforeRequest(HttpServletRequestEE request, StringSE message) 具象サブクラスはこのメソッドを実装して、リクエストが処理される前にログメッセージを書き込む必要があります。 |
protected StringSE | createMessage(HttpServletRequestEE request, StringSE prefix, StringSE suffix) 指定されたリクエスト、プレフィックス、サフィックスのログメッセージを作成します。 |
protected void | doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) リクエストをチェーンの次のフィルターに転送し、サブクラスに委譲して、リクエストが処理される前と後の両方で実際のリクエストロギングを実行します。 |
protected PredicateSE<StringSE> | getHeaderPredicate() 構成された headerPredicate 。 |
protected int | getMaxPayloadLength() ログメッセージに含まれるペイロードボディの最大長を返します。 |
protected StringSE | getMessagePayload(HttpServletRequestEE request) isIncludePayload() が true を返す場合、createMessage(HttpServletRequest, String, String) によって作成されたメッセージのメッセージペイロード部分を抽出します。 |
protected boolean | isIncludeClientInfo() クライアントアドレスとセッション ID をログメッセージに含めるかどうかを返します。 |
protected boolean | isIncludeHeaders() リクエストヘッダーをログメッセージに含めるかどうかを返します。 |
protected boolean | isIncludePayload() リクエストのペイロード(ボディ)をログメッセージに含めるかどうかを返します。 |
protected boolean | isIncludeQueryString() クエリ文字列をログメッセージに含めるかどうかを返します。 |
void | setAfterMessagePrefix(StringSE afterMessagePrefix) リクエストの処理後に書き込まれるログメッセージに付加する必要がある値を設定します。 |
void | setAfterMessageSuffix(StringSE afterMessageSuffix) リクエストの処理後に書き込まれるログメッセージに追加する値を設定します。 |
void | setBeforeMessagePrefix(StringSE beforeMessagePrefix) リクエストが処理される前に書き込まれるログメッセージに付加する必要がある値を設定します。 |
void | setBeforeMessageSuffix(StringSE beforeMessageSuffix) リクエストが処理される前に書き込まれるログメッセージに追加する必要がある値を設定します。 |
void | setHeaderPredicate(PredicateSE<StringSE> headerPredicate) setIncludeHeaders(boolean) が true に設定されている場合、ログに記録するヘッダーを選択するための述語を構成します。 |
void | setIncludeClientInfo(boolean includeClientInfo) クライアントアドレスとセッション ID をログメッセージに含めるかどうかを設定します。 |
void | setIncludeHeaders(boolean includeHeaders) リクエストヘッダーをログメッセージに含めるかどうかを設定します。 |
void | setIncludePayload(boolean includePayload) リクエストのペイロード(ボディ)をログメッセージに含めるかどうかを設定します。 |
void | setIncludeQueryString(boolean includeQueryString) クエリ文字列をログメッセージに含めるかどうかを設定します。 |
void | setMaxPayloadLength(int maxPayloadLength) ログメッセージに含まれるペイロードボディの最大長を設定します。 |
protected boolean | shouldLog(HttpServletRequestEE request) 現在のリクエストに対して beforeRequest(javax.servlet.http.HttpServletRequest, java.lang.String) /afterRequest(javax.servlet.http.HttpServletRequest, java.lang.String) メソッドを呼び出すかどうかを決定します。 |
protected boolean | shouldNotFilterAsyncDispatch() デフォルト値は "false" で、リクエスト処理の開始時に "before" メッセージがログに記録され、最後に非同期にディスパッチされたスレッドが終了したときから最後に "after" メッセージがログに記録されます。 |
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterErrorDispatch
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE DEFAULT_BEFORE_MESSAGE_PREFIX
public static final StringSE DEFAULT_BEFORE_MESSAGE_SUFFIX
public static final StringSE DEFAULT_AFTER_MESSAGE_PREFIX
public void setIncludeQueryString(boolean includeQueryString)
web.xml
のフィルター定義で、パラメーター名 "includeQueryString" に <init-param>
を使用して構成する必要があります。
protected boolean isIncludeQueryString()
public void setIncludeClientInfo(boolean includeClientInfo)
web.xml
のフィルター定義で、パラメーター名 "includeClientInfo" に <init-param>
を使用して構成する必要があります。
protected boolean isIncludeClientInfo()
public void setIncludeHeaders(boolean includeHeaders)
web.xml
のフィルター定義で、パラメーター名 "includeHeaders" に <init-param>
を使用して構成する必要があります。
protected boolean isIncludeHeaders()
public void setIncludePayload(boolean includePayload)
web.xml
のフィルター定義で、パラメーター名 "includePayload" に <init-param>
を使用して構成する必要があります。
protected boolean isIncludePayload()
public void setHeaderPredicate(@Nullable PredicateSE<StringSE> headerPredicate)
setIncludeHeaders(boolean)
が true
に設定されている場合、ログに記録するヘッダーを選択するための述語を構成します。デフォルトでは、これは設定されていません。その場合、すべてのヘッダーがログに記録されます。
headerPredicate
- 使用する述語 @Nullable protected PredicateSE<StringSE> getHeaderPredicate()
headerPredicate
。public void setMaxPayloadLength(int maxPayloadLength)
protected int getMaxPayloadLength()
public void setBeforeMessagePrefix(StringSE beforeMessagePrefix)
public void setBeforeMessageSuffix(StringSE beforeMessageSuffix)
public void setAfterMessagePrefix(StringSE afterMessagePrefix)
public void setAfterMessageSuffix(StringSE afterMessageSuffix)
protected boolean shouldNotFilterAsyncDispatch()
OncePerRequestFilter
の shouldNotFilterAsyncDispatch
protected void doFilterInternal(HttpServletRequestEE request, HttpServletResponseEE response, FilterChainEE filterChain) throws ServletExceptionEE, IOExceptionSE
protected StringSE createMessage(HttpServletRequestEE request, StringSE prefix, StringSE suffix)
includeQueryString
が true
の場合、ログメッセージの内部は request_uri?query_string
の形式になります。それ以外の場合、メッセージは単に request_uri
の形式になります。
最後のメッセージは、説明されている内部部分と、指定されたプレフィックスおよびサフィックスで構成されます。
@Nullable protected StringSE getMessagePayload(HttpServletRequestEE request)
isIncludePayload()
が true を返す場合、createMessage(HttpServletRequest, String, String)
によって作成されたメッセージのメッセージペイロード部分を抽出します。protected boolean shouldLog(HttpServletRequestEE request)
beforeRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
/afterRequest(javax.servlet.http.HttpServletRequest, java.lang.String)
メソッドを呼び出すかどうか、つまり、ロギングが現在アクティブになっているかどうか(およびログメッセージを作成する価値があるかどうか)を決定します。 デフォルトの実装は、常に true
を返します。サブクラスは、ログレベルチェックでこれをオーバーライドできます。
request
- 現在の HTTP リクエスト true
。それ以外の場合は false
protected abstract void beforeRequest(HttpServletRequestEE request, StringSE message)
request
- 現在の HTTP リクエスト message
- 記録するメッセージ protected abstract void afterRequest(HttpServletRequestEE request, StringSE message)
request
- 現在の HTTP リクエスト message
- 記録するメッセージ