com.opensymphony.xwork2.interceptor
Class TimerInterceptor

java.lang.Object
  extended by com.opensymphony.xwork2.interceptor.AbstractInterceptor
      extended by com.opensymphony.xwork2.interceptor.TimerInterceptor
All Implemented Interfaces:
Interceptor, Serializable

public class TimerInterceptor
extends AbstractInterceptor

This interceptor logs the amount of time in milliseconds. In order for this interceptor to work properly, the logging framework must be set to at least the INFO level. This interceptor relies on the Commons Logging API to report its execution-time value.

The parameters above enables us to log all action execution times in our own logfile. This interceptor can be extended to provide custom message format. Users should override the invokeUnderTiming method.
 
 <!-- records only the action's execution time -->
 <action name="someAction" class="com.examples.SomeAction">
     <interceptor-ref name="completeStack"/>
     <interceptor-ref name="timer"/>
     <result name="success">good_result.ftl</result>
 </action>

 <!-- records action's execution time as well as other interceptors-->
 <action name="someAction" class="com.examples.SomeAction">
     <interceptor-ref name="timer"/>
     <interceptor-ref name="completeStack"/>
     <result name="success">good_result.ftl</result>
 </action>
 
 
This second example uses our own log category at debug level.
 
 <!-- records only the action's execution time -->
 <action name="someAction" class="com.examples.SomeAction">
     <interceptor-ref name="completeStack"/>
     <interceptor-ref name="timer">
         <param name="logLevel">debug</param>
         <param name="logCategory">com.mycompany.myapp.actiontime</param>
     <interceptor-ref/>
     <result name="success">good_result.ftl</result>
 </action>

 <!-- records action's execution time as well as other interceptors-->
 <action name="someAction" class="com.examples.SomeAction">
     <interceptor-ref name="timer"/>
     <interceptor-ref name="completeStack"/>
     <result name="success">good_result.ftl</result>
 </action>
 
 

Author:
Jason Carreira, Claus Ibsen
See Also:
Serialized Form

Field Summary
protected  Logger categoryLogger
           
protected static Logger LOG
           
protected  String logCategory
           
protected  String logLevel
           
 
Constructor Summary
TimerInterceptor()
           
 
Method Summary
protected  void doLog(Logger logger, String message)
          Performs the actual logging.
 String getLogCategory()
           
protected  Logger getLoggerToUse()
          Get's the logger to use.
 String getLogLevel()
           
 String intercept(ActionInvocation invocation)
          Override to handle interception
protected  String invokeUnderTiming(ActionInvocation invocation)
          Is called to invoke the action invocation and time the execution time.
private static boolean isLoggerEnabled(Logger logger, String level)
          Is the given logger enalbed at the given level?
 void setLogCategory(String logCatgory)
           
 void setLogLevel(String logLevel)
           
protected  boolean shouldLog()
          Determines if we should log the time.
 
Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor
destroy, init
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

protected static final Logger LOG

categoryLogger

protected Logger categoryLogger

logCategory

protected String logCategory

logLevel

protected String logLevel
Constructor Detail

TimerInterceptor

public TimerInterceptor()
Method Detail

getLogCategory

public String getLogCategory()

setLogCategory

public void setLogCategory(String logCatgory)

getLogLevel

public String getLogLevel()

setLogLevel

public void setLogLevel(String logLevel)

intercept

public String intercept(ActionInvocation invocation)
                 throws Exception
Description copied from class: AbstractInterceptor
Override to handle interception

Specified by:
intercept in interface Interceptor
Specified by:
intercept in class AbstractInterceptor
Parameters:
invocation - the action invocation
Returns:
the return code, either returned from ActionInvocation.invoke(), or from the interceptor itself.
Throws:
Exception - any system-level error, as defined in Action.execute().

invokeUnderTiming

protected String invokeUnderTiming(ActionInvocation invocation)
                            throws Exception
Is called to invoke the action invocation and time the execution time.

Parameters:
invocation - the action invocation.
Returns:
the result of the action execution.
Throws:
Exception - can be thrown from the action.

shouldLog

protected boolean shouldLog()
Determines if we should log the time.

Returns:
true to log, false to not log.

getLoggerToUse

protected Logger getLoggerToUse()
Get's the logger to use.

Returns:
the logger to use.

doLog

protected void doLog(Logger logger,
                     String message)
Performs the actual logging.

Parameters:
logger - the provided logger to use.
message - the message to log.

isLoggerEnabled

private static boolean isLoggerEnabled(Logger logger,
                                       String level)
Is the given logger enalbed at the given level?

Parameters:
logger - the logger.
level - the level to check if isXXXEnabled.
Returns:
true if enabled, false if not.


Copyright © 2000-2009 Apache Software Foundation. All Rights Reserved.