Подтвердить что ты не робот

Spring: стандартный аспект ведения журнала (перехватчик)

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

4b9b3361

Ответ 1

Да, есть!

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

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

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

Ответ 2

Вот список фреймворков, которые регистрируются через 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. Конфигурация регистрации выполняется отдельно от классов. Журналы через commons-logging. Поскольку он предназначен для SpringAOP, вам нужно работать с Spring Beans (и только с общедоступными методами Spring Beans).