クラス AbstractTraceInterceptor
- 実装されたすべてのインターフェース:
SerializableSE
、Advice
、Interceptor
、MethodInterceptor
MethodInterceptor
実装。 デフォルトでは、ログメッセージはインターセプトされているクラスではなく、インターセプタークラスのログに書き込まれます。useDynamicLogger
Bean プロパティを true
に設定すると、インターセプトされるターゲットクラスのすべてのログメッセージが Log
に書き込まれます。
サブクラスは invokeUnderTrace
メソッドを実装する必要があります。このメソッドは、特定の呼び出しをトレースする必要があるときにのみ、このクラスによって呼び出されます。サブクラスは、提供された Log
インスタンスに書き込む必要があります。
- 導入:
- 1.2
- 作成者:
- Rob Harrop, Juergen Hoeller
- 関連事項:
フィールドサマリー
フィールドコンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected ClassSE<?>
getClassForLogging
(ObjectSE target) ロギングの目的で使用するクラスを決定します。protected Log
getLoggerForInvocation
(MethodInvocation invocation) 指定されたMethodInvocation
に使用する適切なLog
インスタンスを返します。invoke
(MethodInvocation invocation) 特定のMethodInvocation
に対してロギングを有効にするかどうかを決定します。protected abstract ObjectSE
invokeUnderTrace
(MethodInvocation invocation, Log logger) サブクラスは、このメソッドをオーバーライドして、提供されたMethodInvocation
の周囲のトレースを実行する必要があります。protected boolean
isInterceptorEnabled
(MethodInvocation invocation, Log logger) インターセプターを開始するかどうか、つまりinvokeUnderTrace
メソッドを呼び出す必要があるかどうかを決定します。protected boolean
isLogEnabled
(Log logger) 指定されたLog
インスタンスが有効かどうかを確認します。void
setHideProxyClassNames
(boolean hideProxyClassNames) "true" に設定すると、dynamic loggers
が可能な限りプロキシクラス名を非表示にします。void
setLogExceptionStackTrace
(boolean logExceptionStackTrace) ロガーに例外を渡すかどうかを設定し、ログにスタックトレースを含めることを提案します。void
setLoggerName
(StringSE loggerName) 使用するロガーの名前を設定します。void
setUseDynamicLogger
(boolean useDynamicLogger) 動的ロガーと静的ロガーのどちらを使用するかを設定します。protected void
writeToLog
(Log logger, StringSE message) 提供されたトレースメッセージを提供されたLog
インスタンスに書き込みます。protected void
writeToLog
(Log logger, StringSE message, ThrowableSE ex) 指定されたトレースメッセージとThrowable
SE を指定されたLog
インスタンスに書き込みます。
フィールドの詳細
defaultLogger
トレースメッセージの書き込みに使用されるデフォルトのLog
インスタンス。このインスタンスは、実装するClass
にマップされます。
コンストラクターの詳細
AbstractTraceInterceptor
public AbstractTraceInterceptor()
メソッドの詳細
setUseDynamicLogger
public void setUseDynamicLogger(boolean useDynamicLogger) 動的ロガーと静的ロガーのどちらを使用するかを設定します。デフォルトは、このトレースインターセプターの静的ロガーです。特定のメソッド呼び出しのログメッセージを書き込むために使用する
Log
インスタンスを決定するために使用されます。Class
が呼び出される動的なインスタンス、またはトレースインターセプターのClass
が静的なインスタンスです。注意 : このプロパティまたは "loggerName" のいずれかを指定します。両方は指定しないでください。
setLoggerName
使用するロガーの名前を設定します。名前は Commons Logging を介して基盤となるロガー実装に渡され、ロガーの構成に従ってログカテゴリとして解釈されます。これは、クラスのカテゴリ(このインターセプターのクラスまたは呼び出されるクラスのいずれか)にログインするのではなく、特定の名前付きカテゴリにログインするように指定できます。
注意 : このプロパティまたは "useDynamicLogger" のいずれかを指定します。両方は指定しないでください。
setHideProxyClassNames
public void setHideProxyClassNames(boolean hideProxyClassNames) "true" に設定すると、dynamic loggers
が可能な限りプロキシクラス名を非表示にします。デフォルトは "false" です。setLogExceptionStackTrace
public void setLogExceptionStackTrace(boolean logExceptionStackTrace) ロガーに例外を渡すかどうかを設定し、ログにスタックトレースを含めることを提案します。デフォルトは "true" です。これを "false" に設定して、ログ出力をトレースメッセージ(該当する場合は例外クラス名と例外メッセージが含まれる場合があります)だけに減らします。- 導入:
- 4.3.10
invoke
特定のMethodInvocation
に対してロギングを有効にするかどうかを決定します。そうでない場合、メソッド呼び出しは通常どおり続行されます。そうでない場合、メソッド呼び出しは処理のためにinvokeUnderTrace
メソッドに渡されます。- 次で指定:
- インターフェース
MethodInterceptor
のinvoke
- パラメーター:
invocation
- メソッド呼び出しジョインポイント- 戻り値:
Joinpoint.proceed()
の呼び出しの結果。インターセプターによってインターセプトされる可能性があります- 例外:
ThrowableSE
- インターセプターまたはターゲットオブジェクトが例外をスローする場合- 関連事項:
getLoggerForInvocation
指定されたMethodInvocation
に使用する適切なLog
インスタンスを返します。useDynamicLogger
フラグが設定されている場合、Log
インスタンスはMethodInvocation
のターゲットクラス用です。それ以外の場合は、Log
がデフォルトの静的ロガーになります。- パラメーター:
invocation
- トレースされるMethodInvocation
- 戻り値:
- 使用する
Log
インスタンス - 関連事項:
getClassForLogging
ロギングの目的で使用するクラスを決定します。- パラメーター:
target
- イントロスペクトするターゲットオブジェクト- 戻り値:
- 指定されたオブジェクトのターゲットクラス
- 関連事項:
isInterceptorEnabled
インターセプターを開始するかどうか、つまりinvokeUnderTrace
メソッドを呼び出す必要があるかどうかを決定します。デフォルトの動作は、指定された
Log
インスタンスが有効かどうかを確認することです。サブクラスはこれをオーバーライドして、他の場合にもインターセプターを適用できます。- パラメーター:
invocation
- トレースされるMethodInvocation
logger
- チェックするLog
インスタンス- 関連事項:
isLogEnabled
指定されたLog
インスタンスが有効かどうかを確認します。「トレース」レベルが有効な場合、デフォルトは
true
です。サブクラスはこれをオーバーライドして、「トレース」が発生するレベルを変更できます。- パラメーター:
logger
- チェックするLog
インスタンス
writeToLog
提供されたトレースメッセージを提供されたLog
インスタンスに書き込みます。Enter/Exit メッセージのために
invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log)
によって呼び出されます。基になるロガーの呼び出しを制御する究極のデリゲートとして
writeToLog(Log, String, Throwable)
にデリゲートします。- 導入:
- 4.3.10
- 関連事項:
writeToLog
指定されたトレースメッセージとThrowable
SE を指定されたLog
インスタンスに書き込みます。Enter/Exit の結果(例外を含む可能性があります)のために
invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log)
によって呼び出されます。setLogExceptionStackTrace(boolean)
が "false" の場合、例外のスタックトレースはログに記録されないことに注意してください。デフォルトでは、メッセージは
TRACE
レベルで書き込まれます。サブクラスはこのメソッドをオーバーライドして、メッセージが書き込まれるレベルを制御できます。通常、それに応じてisLogEnabled(org.apache.commons.logging.Log)
もオーバーライドされます。invokeUnderTrace
@Nullable protected abstract ObjectSE invokeUnderTrace(MethodInvocation invocation, Log logger) throws ThrowableSE 提供されたMethodInvocation
をトレースするために、サブクラスはこのメソッドをオーバーライドする必要があります。サブクラスは、MethodInvocation.proceed()
を呼び出してMethodInvocation
が実際に実行されるようにする責任があります。デフォルトでは、渡された
Log
インスタンスでログレベル「トレース」が有効になります。サブクラスは、デフォルトの動作を変更するためにisInterceptorEnabled
メソッドを上書きし、実際のメッセージを書き込むためにwriteToLog
に委譲しない限り、これを再度チェックする必要はありません。- パラメーター:
logger
- トレースメッセージを書き込むLog
- 戻り値:
MethodInvocation.proceed()
の呼び出しの結果- 例外:
ThrowableSE
-MethodInvocation.proceed()
の呼び出しでエラーが発生した場合- 関連事項: