类 CustomizableTraceInterceptor

java.lang.Object
infra.aop.interceptor.AbstractTraceInterceptor
infra.aop.interceptor.CustomizableTraceInterceptor
所有已实现的接口:
Serializable, Advice, Interceptor, MethodInterceptor

public class CustomizableTraceInterceptor extends AbstractTraceInterceptor
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.

从以下版本开始:
3.0
作者:
TODAY, Rob Harrop, Juergen Hoeller
另请参阅:
  • 字段详细资料

    • PLACEHOLDER_METHOD_NAME

      public static final String PLACEHOLDER_METHOD_NAME
      The $[methodName] placeholder. Replaced with the name of the method being invoked.
      另请参阅:
    • PLACEHOLDER_TARGET_CLASS_NAME

      public static final String PLACEHOLDER_TARGET_CLASS_NAME
      The $[targetClassName] placeholder. Replaced with the fully-qualified name of the Class of the method invocation target.
      另请参阅:
    • PLACEHOLDER_TARGET_CLASS_SHORT_NAME

      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.
      另请参阅:
    • PLACEHOLDER_RETURN_VALUE

      public static final String PLACEHOLDER_RETURN_VALUE
      The $[returnValue] placeholder. Replaced with the String representation of the value returned by the method invocation.
      另请参阅:
    • PLACEHOLDER_ARGUMENT_TYPES

      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.
      另请参阅:
    • PLACEHOLDER_ARGUMENTS

      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.
      另请参阅:
    • PLACEHOLDER_EXCEPTION

      public static final String PLACEHOLDER_EXCEPTION
      The $[exception] placeholder. Replaced with the String representation of any Throwable raised during method invocation.
      另请参阅:
    • PLACEHOLDER_INVOCATION_TIME

      public static final String PLACEHOLDER_INVOCATION_TIME
      The $[invocationTime] placeholder. Replaced with the time taken by the invocation (in milliseconds).
      另请参阅:
    • DEFAULT_ENTER_MESSAGE

      private static final String DEFAULT_ENTER_MESSAGE
      The default message used for writing method entry messages.
      另请参阅:
    • DEFAULT_EXIT_MESSAGE

      private static final String DEFAULT_EXIT_MESSAGE
      The default message used for writing method exit messages.
      另请参阅:
    • DEFAULT_EXCEPTION_MESSAGE

      private static final String DEFAULT_EXCEPTION_MESSAGE
      The default message used for writing exception messages.
      另请参阅:
    • PATTERN

      private static final Pattern PATTERN
      The Pattern used to match placeholders.
    • ALLOWED_PLACEHOLDERS

      static final Set<String> ALLOWED_PLACEHOLDERS
      The Set of allowed placeholders.
    • enterMessage

      private String enterMessage
      The message for method entry.
    • exitMessage

      private String exitMessage
      The message for method exit.
    • exceptionMessage

      private String exceptionMessage
      The message for exceptions during method execution.
  • 构造器详细资料

    • CustomizableTraceInterceptor

      public CustomizableTraceInterceptor()
  • 方法详细资料

    • setEnterMessage

      public void setEnterMessage(String enterMessage) throws IllegalArgumentException
      Set the template used for method entry log messages. This template can contain any of the following placeholders:
      • $[targetClassName]
      • $[targetClassShortName]
      • $[argumentTypes]
      • $[arguments]
      抛出:
      IllegalArgumentException
    • setExitMessage

      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]
    • setExceptionMessage

      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]
    • invokeUnderTrace

      protected Object invokeUnderTrace(MethodInvocation invocation, infra.logging.Logger logger) throws Throwable
      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.
      指定者:
      invokeUnderTrace 在类中 AbstractTraceInterceptor
      logger - the Logger to write trace messages to
      返回:
      the result of the call to MethodInvocation.proceed()
      抛出:
      Throwable - if the call to MethodInvocation.proceed() encountered any errors
      另请参阅:
    • replacePlaceholders

      protected String replacePlaceholders(String message, MethodInvocation methodInvocation, @Nullable Object returnValue, @Nullable Throwable throwable, long invocationTime)
      Replace the placeholders in the given message with the supplied values, or values derived from those supplied.
      参数:
      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
      返回:
      the formatted output to write to the log
    • appendReturnValue

      private static void appendReturnValue(MethodInvocation methodInvocation, Matcher matcher, StringBuilder output, @Nullable Object returnValue)
      Adds the String representation of the method return value to the supplied StringBuilder. Correctly handles null and void results.
      参数:
      methodInvocation - the MethodInvocation that returned the value
      matcher - the Matcher containing the matched placeholder
      output - the StringBuilder to write output to
      returnValue - the value returned by the method invocation.
    • appendArgumentTypes

      private static void appendArgumentTypes(MethodInvocation methodInvocation, Matcher matcher, StringBuilder output)
      Adds a comma-separated list of the short Class names of the method argument types to the output. For example, if a method has signature put(java.lang.String, java.lang.Object) then the value returned will be String, Object.
      参数:
      methodInvocation - the MethodInvocation being logged. Arguments will be retrieved from the corresponding Method.
      matcher - the Matcher containing the state of the output
      output - the StringBuilder containing the output
    • checkForInvalidPlaceholders

      private static void checkForInvalidPlaceholders(String message) throws IllegalArgumentException
      Checks to see if the supplied String has any placeholders that are not specified as constants on this class and throws an IllegalArgumentException if so.
      抛出:
      IllegalArgumentException