|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.springframework.aop.interceptor.AbstractTraceInterceptor
public abstract class AbstractTraceInterceptor
Base MethodInterceptor implementation for tracing.
By default, log messages are written to the log for the interceptor class,
not the class which is being intercepted. Setting the useDynamicLogger
bean property to true causes all log messages to be written to
the Log for the target class being intercepted.
Subclasses must implement the invokeUnderTrace method, which
is invoked by this class ONLY when a particular invocation SHOULD be traced.
Subclasses should write to the Log instance provided.
setUseDynamicLogger(boolean),
invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log),
Serialized Form| Field Summary | |
|---|---|
protected Log |
defaultLogger
The default Log instance used to write trace messages. |
| Constructor Summary | |
|---|---|
AbstractTraceInterceptor()
|
|
| Method Summary | |
|---|---|
protected Class |
getClassForLogging(Object target)
Determine the class to use for logging purposes. |
protected Log |
getLoggerForInvocation(MethodInvocation invocation)
Return the appropriate Log instance to use for the given
MethodInvocation. |
Object |
invoke(MethodInvocation invocation)
Determines whether or not logging is enabled for the particular MethodInvocation. |
protected abstract Object |
invokeUnderTrace(MethodInvocation invocation,
Log logger)
Subclasses must override this method to perform any tracing around the supplied MethodInvocation. |
protected boolean |
isInterceptorEnabled(MethodInvocation invocation,
Log logger)
Determine whether the interceptor should kick in, that is, whether the invokeUnderTrace method should be called. |
protected boolean |
isLogEnabled(Log logger)
Determine whether the given Log instance is enabled. |
void |
setHideProxyClassNames(boolean hideProxyClassNames)
Set to "true" to have dynamic loggers hide
proxy class names wherever possible. |
void |
setLoggerName(String loggerName)
Set the name of the logger to use. |
void |
setUseDynamicLogger(boolean useDynamicLogger)
Set whether to use a dynamic logger or a static logger. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected transient Log defaultLogger
Log instance used to write trace messages.
This instance is mapped to the implementing Class.
| Constructor Detail |
|---|
public AbstractTraceInterceptor()
| Method Detail |
|---|
public void setUseDynamicLogger(boolean useDynamicLogger)
Used to determine which Log instance should be used to write
log messages for a particular method invocation: a dynamic one for the
Class getting called, or a static one for the Class
of the trace interceptor.
NOTE: Specify either this property or "loggerName", not both.
getLoggerForInvocation(org.aopalliance.intercept.MethodInvocation)public void setLoggerName(String loggerName)
This can be specified to not log into the category of a class (whether this interceptor's class or the class getting called) but rather into a specific named category.
NOTE: Specify either this property or "useDynamicLogger", not both.
LogFactory.getLog(String),
Logger.getLogger(String),
Logger.getLogger(String)public void setHideProxyClassNames(boolean hideProxyClassNames)
dynamic loggers hide
proxy class names wherever possible. Default is "false".
public Object invoke(MethodInvocation invocation)
throws Throwable
MethodInvocation.
If not, the method invocation proceeds as normal, otherwise the method invocation is passed
to the invokeUnderTrace method for handling.
invoke in interface MethodInterceptorThrowableinvokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log)protected Log getLoggerForInvocation(MethodInvocation invocation)
Log instance to use for the given
MethodInvocation. If the useDynamicLogger flag
is set, the Log instance will be for the target class of the
MethodInvocation, otherwise the Log will be the
default static logger.
invocation - the MethodInvocation being traced
Log instance to usesetUseDynamicLogger(boolean)protected Class getClassForLogging(Object target)
target - the target object to introspect
setHideProxyClassNames(boolean)
protected boolean isInterceptorEnabled(MethodInvocation invocation,
Log logger)
invokeUnderTrace method should be called.
Default behavior is to check whether the given Log
instance is enabled. Subclasses can override this to apply the
interceptor in other cases as well.
invocation - the MethodInvocation being tracedlogger - the Log instance to checkinvokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log),
isLogEnabled(org.apache.commons.logging.Log)protected boolean isLogEnabled(Log logger)
Log instance is enabled.
Default is true when the "trace" level is enabled.
Subclasses can override this to change the level under which 'tracing' occurs.
logger - the Log instance to check
protected abstract Object invokeUnderTrace(MethodInvocation invocation,
Log logger)
throws Throwable
MethodInvocation. Subclasses are responsible for
ensuring that the MethodInvocation actually executes by
calling MethodInvocation.proceed().
By default, the passed-in Log instance will have log level
"trace" enabled. Subclasses do not have to check for this again, unless
they overwrite the isInterceptorEnabled method to modify
the default behavior.
logger - the Log to write trace messages to
MethodInvocation.proceed()
Throwable - if the call to MethodInvocation.proceed()
encountered any errorsisInterceptorEnabled(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log),
isLogEnabled(org.apache.commons.logging.Log)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||