Spring:标准日志方面(拦截器)

Ser*_*huk 22 java logging spring aspectj

我已经找到了很多关于如何使用像这样或者这样的Spring框架创建自定义方面的示例,但没有找到针对这种情况和问题的标准/常见Spring实现.Spring是否有任何标准的日志记录方面实现?

Tom*_*icz 24

是的有!

<bean id="customizableTraceInterceptor" class="org.springframework.aop.interceptor.CustomizableTraceInterceptor">
    <property name="enterMessage" value="Entering $[methodName]($[arguments])"/>
    <property name="exitMessage" value="Leaving $[methodName](): $[returnValue]"/>
</bean>
<aop:config>
    <aop:advisor advice-ref="customizableTraceInterceptor" pointcut="execution(public * BankAccountServlet.*(..))"/>
</aop:config>
Run Code Online (Sandbox Code Playgroud)

查看CustomizableTraceInterceptor API,您可以使用多个占位符定义单独的输入/退出/异常消息:

  • $[methodName] - 替换为被调用方法的名称
  • $[targetClassName] - 替换为作为调用目标的类的名称
  • $[targetClassShortName] - 替换为作为调用目标的类的短名称
  • $[returnValue] - 替换为调用返回的值
  • $[argumentTypes] - 替换为逗号分隔的方法参数的短类名列表
  • $[arguments] - 替换为逗号分隔的方法参数的String表示列表
  • $[exception] - 替换为在调用期间引发的任何Throwable的String表示
  • $[invocationTime] - 替换为方法调用所花费的时间(以毫秒为单位)