Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.opensymphony.xwork2.interceptor
Class TimerInterceptor

    java.lang.Object
      com.opensymphony.xwork2.interceptor.AbstractInterceptor
          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.

- logLevel (optional) - what log level should we use (`trace, debug, info, warn, error, fatal`)? - defaut is `info`
- logCategory (optional) - If provided we would use this category (eg. `com.mycompany.app`). Default is to use `com.opensymphony.xwork2.interceptor.TimerInterceptor`.

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 Log` | `categoryLogger`
`protected static Log` | `log`
`protected String` | `logCategory`
`protected String` | `logLevel`

Constructor Summary
`TimerInterceptor()`

Method Summary
`protected void` | `doLog(Log logger, String message)` Performs the actual logging.
`String` | `getLogCategory()`
`protected Log` | `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(Log 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 Log log

### categoryLogger

    protected Log 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`
  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 Log getLoggerToUse()

  Get's the logger to use.

  Returns:
    the logger to use.

### doLog

    protected void doLog(Log logger,
                         String message)

  Performs the actual logging.

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

### isLoggerEnabled

    private static boolean isLoggerEnabled(Log 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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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