Я работал с базой кода компании, которая придерживается политики ведения большого количества журналов трассировки. у каждого метода есть фрагмент кода, который начинается так:
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')
.
Причина, по которой я выбрал это решение, - сделать так, чтобы другим разработчикам не приходилось изучать что-то новое, кроме как использовать аннотации вместо кода. Я работаю в серверной среде, в которой мы развертываем сотни веб-приложений и десятки разработчиков. Поэтому я искал способ реализовать это в веб-приложении без лишнего кода или дополнительных больших библиотек. Это означает, что я ищу небольшую стабильную реализацию АОП с аннотациями, аналогичными тем, которые я предлагал, которые легко настраивать в каждом веб-приложении. Производительность тоже важна. Какой самый простой пример реализации этого с помощью АОП?
Редактировать: Я нашел что-то очень похожее на то, что я ищу, но здесь есть несколько проблем. Все классы, требующие ведения журнала, должны быть настроены, что потребует больше ресурсов, чем просто использование аннотаций. Может ли конфигурация пружины
исправить это?