Spring: Standard Logging aspect (interceptor)

前端 未结 2 1990
盖世英雄少女心
盖世英雄少女心 2020-11-28 06:30

I\'ve found a lot of examples on how to create a custom aspect for logging using the Spring framework like this or this but did not find standard/common Spring implementatio

相关标签:
2条回答
  • 2020-11-28 06:42

    Yes there are!

    <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>
    

    Check out the CustomizableTraceInterceptor API, you can define separate enter/exit/exception messages with several placeholders:

    • $[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
    0 讨论(0)
  • 2020-11-28 07:00

    Here are the list of frameworks that do logging via AOP:

    http://aspect4log.sf.net - does very nice looking logging via slf4j and @Log annotation. Can work via SpringAOP, and AspectJ. With AspectJ it works even for private methods and constructors and does not require a class to be a Spring Bean. Very easy to use, i was able to make it running with my project within 5 min.

    http://loggifier.unkrig.de - does logging via java.util.logging, a bit too complex and not that well document but claims that it can instrument already compiled jar/war/ear files!

    AbstractTraceInterceptor (from SpringAOP) and it's subclasses SimpleTraceInterceptor and CustomizableTraceInterceptor. Logging configuration is done separately from classes. Logs via commons-logging. Since it is designed for SpringAOP you have to work with Spring Beans (and only with Spring Beans public methods).

    0 讨论(0)
提交回复
热议问题