Использование аннотаций для ведения журнала трассировки

Я работал с базой кода компании, которая придерживается политики ведения большого количества журналов трассировки. у каждого метода есть фрагмент кода, который начинается так:

String LOG_METHOD = "nameOfMethod(String,List):void";
if(logger.isTraceEnabled()) { 
    Object[] params = new Object[] { string, list };
    logger.trace(CompanyMessages.newMethodInstanceMessage(this, LOG_METHOD, params)); 
}

и заканчивается следующим образом (либо в предложении finally , либо только в конце метода: Это загромождает код, и другие кодировщики постоянно портят его своими собственными интерпретациями, которые не используют специальный класс CompanyMessages , который необходим для форматирования сообщений, которые будут прочитаны инструментами мониторинга. Поэтому я ищу способ избавиться от всего кода выше и просто предоставить все методы, требующие ведения журнала трассировки, с такими аннотациями, как: @LogBefore ('logLevel') & @LogAfter ('logLevel') .

Причина, по которой я выбрал это решение, - сделать так, чтобы другим разработчикам не приходилось изучать что-то новое, кроме как использовать аннотации вместо кода. Я работаю в серверной среде, в которой мы развертываем сотни веб-приложений и десятки разработчиков. Поэтому я искал способ реализовать это в веб-приложении без лишнего кода или дополнительных больших библиотек. Это означает, что я ищу небольшую стабильную реализацию АОП с аннотациями, аналогичными тем, которые я предлагал, которые легко настраивать в каждом веб-приложении. Производительность тоже важна. Какой самый простой пример реализации этого с помощью АОП?

Редактировать: Я нашел что-то очень похожее на то, что я ищу, но здесь есть несколько проблем. Все классы, требующие ведения журнала, должны быть настроены, что потребует больше ресурсов, чем просто использование аннотаций. Может ли конфигурация пружины исправить это?

11
задан 14 revs, 2 users 100% 21 February 2013 в 22:25
поделиться