public class

CustomizableTraceInterceptor

extends AbstractTraceInterceptor
java.lang.Object
   ↳ org.springframework.aop.interceptor.AbstractTraceInterceptor
     ↳ org.springframework.aop.interceptor.CustomizableTraceInterceptor

Class Overview

MethodInterceptor implementation that allows for highly customizable method-level tracing, using placeholders.

Trace messages are written on method entry, and if the method invocation succeeds on method exit. If an invocation results in an exception, then an exception message is written. The contents of these trace messages is fully customizable and special placeholders are available to allow you to include runtime information in your log messages. The placeholders available are:

  • $[methodName] - replaced with the name of the method being invoked
  • $[targetClassName] - replaced with the name of the class that is the target of the invocation
  • $[targetClassShortName] - replaced with the short name of the class that is the target of the invocation
  • $[returnValue] - replaced with the value returned by the invocation
  • $[argumentTypes] - replaced with a comma-separated list of the short class names of the method arguments
  • $[arguments] - replaced with a comma-separated list of the String representation of the method arguments
  • $[exception] - replaced with the String representation of any Throwable raised during the invocation
  • $[invocationTime] - replaced with the time, in milliseconds, taken by the method invocation

There are restrictions on which placeholders can be used in which messages: see the individual message properties for details on the valid placeholders.

Summary

Constants
String PLACEHOLDER_ARGUMENTS The $[arguments] placeholder.
String PLACEHOLDER_ARGUMENT_TYPES The $[argumentTypes] placeholder.
String PLACEHOLDER_EXCEPTION The $[exception] placeholder.
String PLACEHOLDER_INVOCATION_TIME The $[invocationTime] placeholder.
String PLACEHOLDER_METHOD_NAME The $[methodName] placeholder.
String PLACEHOLDER_RETURN_VALUE The $[returnValue] placeholder.
String PLACEHOLDER_TARGET_CLASS_NAME The $[targetClassName] placeholder.
String PLACEHOLDER_TARGET_CLASS_SHORT_NAME The $[targetClassShortName] placeholder.
[Expand]
Inherited Fields
From class org.springframework.aop.interceptor.AbstractTraceInterceptor
Public Constructors
CustomizableTraceInterceptor()
Public Methods
void setEnterMessage(String enterMessage)
Set the template used for method entry log messages.
void setExceptionMessage(String exceptionMessage)
Set the template used for method exception log messages.
void setExitMessage(String exitMessage)
Set the template used for method exit log messages.
Protected Methods
Object invokeUnderTrace(MethodInvocation invocation, Log logger)
Writes a log message before the invocation based on the value of enterMessage.
String replacePlaceholders(String message, MethodInvocation methodInvocation, Object returnValue, Throwable throwable, long invocationTime)
Replace the placeholders in the given message with the supplied values, or values derived from those supplied.
void writeToLog(Log logger, String message)
Writes the supplied message to the supplied Log instance.
void writeToLog(Log logger, String message, Throwable ex)
Writes the supplied message and Throwable to the supplied Log instance.
[Expand]
Inherited Methods
From class org.springframework.aop.interceptor.AbstractTraceInterceptor
From class java.lang.Object

Constants

public static final String PLACEHOLDER_ARGUMENTS

The $[arguments] placeholder. Replaced with a comma separated list of the argument values for the method invocation. Relies on the toString() method of each argument type.

Constant Value: "$[arguments]"

public static final String PLACEHOLDER_ARGUMENT_TYPES

The $[argumentTypes] placeholder. Replaced with a comma-separated list of the argument types for the method invocation. Argument types are written as short class names.

Constant Value: "$[argumentTypes]"

public static final String PLACEHOLDER_EXCEPTION

The $[exception] placeholder. Replaced with the String representation of any Throwable raised during method invocation.

Constant Value: "$[exception]"

public static final String PLACEHOLDER_INVOCATION_TIME

The $[invocationTime] placeholder. Replaced with the time taken by the invocation (in milliseconds).

Constant Value: "$[invocationTime]"

public static final String PLACEHOLDER_METHOD_NAME

The $[methodName] placeholder. Replaced with the name of the method being invoked.

Constant Value: "$[methodName]"

public static final String PLACEHOLDER_RETURN_VALUE

The $[returnValue] placeholder. Replaced with the String representation of the value returned by the method invocation.

Constant Value: "$[returnValue]"

public static final String PLACEHOLDER_TARGET_CLASS_NAME

The $[targetClassName] placeholder. Replaced with the fully-qualifed name of the Class of the method invocation target.

Constant Value: "$[targetClassName]"

public static final String PLACEHOLDER_TARGET_CLASS_SHORT_NAME

The $[targetClassShortName] placeholder. Replaced with the short name of the Class of the method invocation target.

Constant Value: "$[targetClassShortName]"

Public Constructors

public CustomizableTraceInterceptor ()

Public Methods

public void setEnterMessage (String enterMessage)

Set the template used for method entry log messages. This template can contain any of the following placeholders:

  • $[targetClassName]
  • $[targetClassShortName]
  • $[argumentTypes]
  • $[arguments]

public void setExceptionMessage (String exceptionMessage)

Set the template used for method exception log messages. This template can contain any of the following placeholders:

  • $[targetClassName]
  • $[targetClassShortName]
  • $[argumentTypes]
  • $[arguments]
  • $[exception]

public void setExitMessage (String exitMessage)

Set the template used for method exit log messages. This template can contain any of the following placeholders:

  • $[targetClassName]
  • $[targetClassShortName]
  • $[argumentTypes]
  • $[arguments]
  • $[returnValue]
  • $[invocationTime]

Protected Methods

protected Object invokeUnderTrace (MethodInvocation invocation, Log logger)

Writes a log message before the invocation based on the value of enterMessage. If the invocation succeeds, then a log message is written on exit based on the value exitMessage. If an exception occurs during invocation, then a message is written based on the value of exceptionMessage.

Parameters
logger the Log to write trace messages to
Returns
  • the result of the call to MethodInvocation.proceed()
Throws
Throwable

protected String replacePlaceholders (String message, MethodInvocation methodInvocation, Object returnValue, Throwable throwable, long invocationTime)

Replace the placeholders in the given message with the supplied values, or values derived from those supplied.

Parameters
message the message template containing the placeholders to be replaced
methodInvocation the MethodInvocation being logged. Used to derive values for all placeholders except $[exception] and $[returnValue].
returnValue any value returned by the invocation. Used to replace the $[returnValue] placeholder. May be null.
throwable any Throwable raised during the invocation. The value of Throwable.toString() is replaced for the $[exception] placeholder. May be null.
invocationTime the value to write in place of the $[invocationTime] placeholder
Returns
  • the formatted output to write to the log

protected void writeToLog (Log logger, String message)

Writes the supplied message to the supplied Log instance.

See Also
  • #writeToLog(org.apache.commons.logging.Log, String, Throwable)

protected void writeToLog (Log logger, String message, Throwable ex)

Writes the supplied message and Throwable to the supplied Log instance. By default messages are written at TRACE level. Sub-classes can override this method to control which level the message is written at.