Упростите ленивую регистрацию с SLF4J - PullRequest
0 голосов
/ 15 апреля 2020

Я использую SLF4J с Logback в приложении Spring Boot. Мне было интересно использовать ленивую регистрацию, и после некоторых исследований я нашел это решение.

Это работает, как и ожидалось, и не вызывает методы, если уровень регистрации не совпадает.

logger.debug("Begin proceed aspect Method {} : initiator={} | recepient={} | tx_type={}",
                new Object() {@Override public String toString() { return proceedingJoinPoint.getSignature().getName(); }},
                new Object() {@Override public String toString() { return request.getAgentAlias(); }},
                new Object() {@Override public String toString() { return request.getSubscriberMobile(); }},
                new Object() {@Override public String toString() { return request.getTxType(); }});

Как видите, я создаю новые объекты и переопределяю метод toString снова и снова. Я не хочу этого делать. Есть лучший способ сделать это?

Я использую версию SLF4J 1.7.28, поставляемую в комплекте со стартером Spring Boot. Обратите внимание, что я предпочитаю использовать SLF4J по сравнению с другими средами ведения журналов.

Я попробовал slf4j-api 2.0.0-alpha1 версию вместе с slf4j-simple привязкой, поскольку он имеет Реализация logger.atDebug.log (). Но я не мог заставить его работать должным образом.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Лучший способ сделать это:

if (logger.isDebugEnabled()) {
    logger.debug("Begin proceed aspect Method {} : initiator={} | recepient={} | tx_type={}",
                 proceedingJoinPoint.getSignature().getName(),
                 request.getAgentAlias(),
                 request.getSubscriberMobile(),
                 request.getTxType());
}

Или:

if (logger.isDebugEnabled()) {
    logger.debug("Begin proceed aspect Method " + proceedingJoinPoint.getSignature().getName() +
                 " : initiator=" + request.getAgentAlias() +
                 " | recepient=" + request.getSubscriberMobile() +
                 " | tx_type=" + request.getTxType());
}
0 голосов
/ 15 апреля 2020

Если вы хотите добавить несколько строк условий, вы можете добавить оператор if, чтобы проверить, включен ли уровень журнала, а затем записать сообщение.

Ленивая загрузка сохраняется, но вы что-то получите как:

if(log.isDebugEnabled()) {
 log.debug(....);
}
...