Spring: стандартный аспект ведения журнала (перехватчик) - PullRequest
22 голосов
/ 05 сентября 2011

Я нашел много примеров того, как создать пользовательский аспект для ведения журнала с использованием среды Spring, например this или this , но не нашел стандартную / общую реализацию Spring для эта ситуация и вопрос. Существуют ли какие-либо стандартные реализации аспекта протоколирования из Spring или нет?

Ответы [ 2 ]

24 голосов
/ 05 сентября 2011

Да, есть!

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

Извлеките API CustomizableTraceInterceptor , вы можете определить отдельные сообщения входа / выхода / исключения с несколькими заполнителями:

  • $[methodName] - заменено именем вызываемого метода
  • $[targetClassName] - заменено именем класса, являющегося целью вызова
  • $[targetClassShortName] - заменено коротким именем класса, являющегося целью вызова
  • $[returnValue] - заменяется значением, возвращаемым вызовом
  • $[argumentTypes] - заменен разделенным запятыми списком коротких имен классов аргументов метода
  • $[arguments] - заменен разделенным запятыми списком строкового представления аргументов метода
  • $[exception] - заменяется строковым представлением любого Throwable, созданного во время вызова
  • $[invocationTime] - заменяется временем в миллисекундах, взятым вызовом метода
0 голосов
/ 02 марта 2015

Вот список фреймворков, которые делают запись через AOP:

http://aspect4log.sf.net - делает очень красивую запись через аннотации slf4j и @Log. Может работать через SpringAOP и AspectJ. С AspectJ он работает даже для частных методов и конструкторов и не требует, чтобы класс был Spring Bean. Очень прост в использовании, я смог запустить его с моим проектом в течение 5 минут.

http://loggifier.unkrig.de - делает запись через java.util.logging, слишком сложный и не очень хороший документ, но утверждает, что может работать с уже скомпилированными файлами jar / war / ear!

AbstractTraceInterceptor (из SpringAOP) и его подклассы SimpleTraceInterceptor и CustomizableTraceInterceptor. Настройка ведения журнала производится отдельно от классов. Журналы через общие журналы. Так как он предназначен для SpringAOP, вы должны работать с Spring Beans (и только с открытыми методами Spring Beans).

...