public abstract class AbstractTraceInterceptor extends ObjectSE implements MethodInterceptor, SerializableSE
MethodInterceptor 実装。 デフォルトでは、ログメッセージはインターセプトされているクラスではなく、インターセプタークラスのログに書き込まれます。useDynamicLogger Bean プロパティを true に設定すると、インターセプトされるターゲットクラスのすべてのログメッセージが Log に書き込まれます。
サブクラスは invokeUnderTrace メソッドを実装する必要があります。このメソッドは、特定の呼び出しをトレースする必要があるときにのみ、このクラスによって呼び出されます。サブクラスは、提供された Log インスタンスに書き込む必要があります。
setUseDynamicLogger(boolean), invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log), 連載形式 | 修飾子と型 | フィールドと説明 |
|---|---|
protected Log | defaultLogger トレースメッセージの書き込みに使用されるデフォルトの Log インスタンス。 |
| コンストラクターと説明 |
|---|
AbstractTraceInterceptor() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected ClassSE<?> | getClassForLogging(ObjectSE target) ロギングの目的で使用するクラスを決定します。 |
protected Log | getLoggerForInvocation(MethodInvocation invocation) 指定された MethodInvocation に使用する適切な Log インスタンスを返します。 |
ObjectSE | 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) 指定されたトレースメッセージと ThrowableSE を指定された Log インスタンスに書き込みます。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void setUseDynamicLogger(boolean useDynamicLogger)
特定のメソッド呼び出しのログメッセージを書き込むために使用する Log インスタンスを決定するために使用されます。Class が呼び出される動的なインスタンス、またはトレースインターセプターの Class が静的なインスタンスです。
注意 : このプロパティまたは "loggerName" のいずれかを指定します。両方は指定しないでください。
public void setLoggerName(StringSE loggerName)
これは、クラスのカテゴリ(このインターセプターのクラスまたは呼び出されるクラスのいずれか)にログインするのではなく、特定の名前付きカテゴリにログインするように指定できます。
注意 : このプロパティまたは "useDynamicLogger" のいずれかを指定します。両方は指定しないでください。
public void setHideProxyClassNames(boolean hideProxyClassNames)
dynamic loggers が可能な限りプロキシクラス名を非表示にします。デフォルトは "false" です。public void setLogExceptionStackTrace(boolean logExceptionStackTrace)
public ObjectSE invoke(MethodInvocation invocation) throws ThrowableSE
MethodInvocation のロギングを有効にするかどうかを決定します。そうでない場合、メソッド呼び出しは通常どおり続行されます。それ以外の場合、メソッド呼び出しは処理のために invokeUnderTrace メソッドに渡されます。MethodInterceptor の invoke invocation - メソッド呼び出しジョインポイント Joinpoint.proceed() の呼び出しの結果。インターセプターによってインターセプトされる可能性があります ThrowableSE - インターセプターまたはターゲットオブジェクトが例外をスローする場合 invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log)protected Log getLoggerForInvocation(MethodInvocation invocation)
MethodInvocation に使用する適切な Log インスタンスを返します。useDynamicLogger フラグが設定されている場合、Log インスタンスは MethodInvocation のターゲットクラス用です。それ以外の場合は、Log がデフォルトの静的ロガーになります。invocation - トレースされる MethodInvocation Log インスタンス setUseDynamicLogger(boolean)protected ClassSE<?> getClassForLogging(ObjectSE target)
target - イントロスペクトするターゲットオブジェクト setHideProxyClassNames(boolean)protected boolean isInterceptorEnabled(MethodInvocation invocation, Log logger)
invokeUnderTrace メソッドを呼び出す必要があるかどうかを決定します。 デフォルトの動作は、指定された Log インスタンスが有効かどうかを確認することです。サブクラスはこれをオーバーライドして、他の場合にもインターセプターを適用できます。
invocation - トレースされる MethodInvocation logger - チェックする Log インスタンス invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log), isLogEnabled(org.apache.commons.logging.Log)protected boolean isLogEnabled(Log logger)
Log インスタンスが有効かどうかを確認します。「トレース」レベルが有効な場合、デフォルトは true です。サブクラスはこれをオーバーライドして、「トレース」が発生するレベルを変更できます。
logger - チェックする Log インスタンス protected void writeToLog(Log logger, StringSE message)
Log インスタンスに書き込みます。Enter/Exit メッセージのために invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log) によって呼び出されます。
基になるロガーの呼び出しを制御する究極のデリゲートとして writeToLog(Log, String, Throwable) にデリゲートします。
writeToLog(Log, String, Throwable)protected void writeToLog(Log logger, StringSE message, @Nullable ThrowableSE ex)
ThrowableSE を指定された Log インスタンスに書き込みます。Enter/Exit の結果(例外を含む可能性があります)のために invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log) によって呼び出されます。setLogExceptionStackTrace(boolean) が "false" の場合、例外のスタックトレースはログに記録されないことに注意してください。
デフォルトでは、メッセージは TRACE レベルで書き込まれます。サブクラスはこのメソッドをオーバーライドして、メッセージが書き込まれるレベルを制御できます。通常、それに応じて isLogEnabled(org.apache.commons.logging.Log) もオーバーライドされます。
protected abstract ObjectSE invokeUnderTrace(MethodInvocation invocation, Log logger) throws ThrowableSE
MethodInvocation をトレースするために、サブクラスはこのメソッドをオーバーライドする必要があります。サブクラスは、MethodInvocation.proceed() を呼び出して MethodInvocation が実際に実行されるようにする責任があります。 デフォルトでは、渡された Log インスタンスでログレベル「トレース」が有効になります。サブクラスは、デフォルトの動作を変更するために isInterceptorEnabled メソッドを上書きし、実際のメッセージを書き込むために writeToLog に委譲しない限り、これを再度チェックする必要はありません。
logger - トレースメッセージを書き込む Log MethodInvocation.proceed() の呼び出しの結果 ThrowableSE - MethodInvocation.proceed() の呼び出しでエラーが発生した場合 isLogEnabled(org.apache.commons.logging.Log), writeToLog(Log, String), writeToLog(Log, String, Throwable)