クラス AbstractRequestLoggingFilter

実装済みのインターフェース一覧:
jakarta.servlet.Filter, Aware, BeanNameAware, DisposableBean, InitializingBean, EnvironmentAware, EnvironmentCapable, ServletContextAware
既知の直属サブクラス
CommonsRequestLoggingFilter, ServletContextRequestLoggingFilter

public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter
リクエストが処理される前後にロギング操作を実行する Filter の基本クラス。

サブクラスは、beforeRequest(HttpServletRequest, String) メソッドと afterRequest(HttpServletRequest, String) メソッドをオーバーライドして、リクエストに関する実際のロギングを実行する必要があります。

サブクラスには、beforeRequest および afterRequest メソッドでログに書き込むメッセージが渡されます。デフォルトでは、リクエストの URI のみがログに記録されます。ただし、includeQueryString プロパティを true に設定すると、リクエストのクエリ文字列も含まれます。これは、includeClientInfo および includeHeaders によってさらに拡張できます。リクエストのペイロード(ボディコンテンツ)は、includePayload フラグを介してログに記録できます。これは、実際に読み取られたペイロードの一部のみをログに記録することに注意してください。必ずしもリクエストのボディ全体ではありません。

変更前および変更後のメッセージのプレフィックスとサフィックスは、beforeMessagePrefixafterMessagePrefixbeforeMessageSuffixafterMessageSuffix プロパティを使用して構成できます。

導入:
1.2.5
作成者:
Rob Harrop, Juergen Hoeller, Rossen Stoyanchev
関連事項:
  • フィールドの詳細

    • DEFAULT_BEFORE_MESSAGE_PREFIX

      public static final StringSE DEFAULT_BEFORE_MESSAGE_PREFIX
      リクエストが処理される前に書き込まれるログメッセージに付加されるデフォルト値。
      関連事項:
    • DEFAULT_BEFORE_MESSAGE_SUFFIX

      public static final StringSE DEFAULT_BEFORE_MESSAGE_SUFFIX
      リクエストが処理される前に書き込まれるログメッセージに追加されるデフォルト値。
      関連事項:
    • DEFAULT_AFTER_MESSAGE_PREFIX

      public static final StringSE DEFAULT_AFTER_MESSAGE_PREFIX
      リクエストの処理後に書き込まれるログメッセージの前に付加されるデフォルト値。
      関連事項:
    • DEFAULT_AFTER_MESSAGE_SUFFIX

      public static final StringSE 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

      public void setQueryParamPredicate(@Nullable PredicateSE<StringSE> queryParamPredicate)
      setIncludeQueryString(boolean) が true に設定されている場合に、ログに記録するクエリパラメーターを選択するための述語を構成します。

      デフォルトではこれは設定されておらず、その場合、すべてのクエリパラメーターがログに記録されます。

      述語はクエリパラメーター名ごとに 1 回適用されます。同じクエリパラメーター名に複数の値がある場合、ログに記録されるクエリ文字列には、HttpServletRequest.getQueryString() によって返されるものよりも name=value マッピングが少なくなります。

      パラメーター:
      queryParamPredicate - 使用する述語
      導入:
      7.0
    • getQueryParamPredicate

      protected @Nullable PredicateSE<StringSE> getQueryParamPredicate()
      構成された queryParamPredicate
      導入:
      7.0
    • setHeaderPredicate

      public void setHeaderPredicate(@Nullable PredicateSE<StringSE> headerPredicate)
      setIncludeHeaders(boolean) が true に設定されている場合、ログに記録するヘッダーを選択するための述語を構成します。

      デフォルトではこれは設定されておらず、その場合すべてのヘッダーがログに記録されます。

      パラメーター:
      headerPredicate - 使用する述語
      導入:
      5.2
    • getHeaderPredicate

      protected @Nullable PredicateSE<StringSE> getHeaderPredicate()
      構成された headerPredicate
      導入:
      5.2
    • setMaxPayloadLength

      public void setMaxPayloadLength(int maxPayloadLength)
      ログメッセージに含まれるペイロードボディの最大長を設定します。デフォルトは 50 文字です。
      導入:
      3.0
    • getMaxPayloadLength

      protected int getMaxPayloadLength()
      ログメッセージに含まれるペイロードボディの最大長を返します。
      導入:
      3.0
    • setBeforeMessagePrefix

      public void setBeforeMessagePrefix(StringSE beforeMessagePrefix)
      リクエストが処理される前に書き込まれるログメッセージに付加する必要がある値を設定します。
    • setBeforeMessageSuffix

      public void setBeforeMessageSuffix(StringSE beforeMessageSuffix)
      リクエストが処理される前に書き込まれるログメッセージに追加する必要がある値を設定します。
    • setAfterMessagePrefix

      public void setAfterMessagePrefix(StringSE afterMessagePrefix)
      リクエストの処理後に書き込まれるログメッセージに付加する必要がある値を設定します。
    • setAfterMessageSuffix

      public void setAfterMessageSuffix(StringSE afterMessageSuffix)
      リクエストの処理後に書き込まれるログメッセージに追加する値を設定します。
    • shouldNotFilterAsyncDispatch

      protected boolean shouldNotFilterAsyncDispatch()
      デフォルト値は "false" で、リクエスト処理の開始時に "before" メッセージがログに記録され、最後に非同期にディスパッチされたスレッドが終了したときから最後に "after" メッセージがログに記録されます。
      オーバーライド:
      クラス OncePerRequestFiltershouldNotFilterAsyncDispatch 
    • doFilterInternal

      protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE
      リクエストをチェーンの次のフィルターに転送し、サブクラスに委譲して、リクエストが処理される前と後の両方で実際のリクエストロギングを実行します。
      次で指定:
      クラス OncePerRequestFilterdoFilterInternal 
      例外:
      jakarta.servlet.ServletException
      IOExceptionSE
      関連事項:
    • createMessage

      protected StringSE createMessage(jakarta.servlet.http.HttpServletRequest request, StringSE prefix, StringSE suffix)
      指定されたリクエスト、プレフィックス、サフィックスのログメッセージを作成します。

      includeQueryString が true の場合、ログメッセージの内部は request_uri?query_string の形式になります。それ以外の場合、メッセージは単に request_uri の形式になります。

      最後のメッセージは、説明されている内部部分と、指定されたプレフィックスおよびサフィックスで構成されます。

    • getMessagePayload

      protected @Nullable StringSE getMessagePayload(jakarta.servlet.http.HttpServletRequest request)
      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 - 記録するメッセージ