2011-05-10 2 views
55

Каков правильный подход для регистрации как сообщения об ошибке, так и исключения с использованием SLF4J?Как регистрировать исключение и сообщение с заполнителями с помощью SLF4J

Я попытался сделать это, но трассировки стека исключений никогда не печатается:

logger.error("Unable to parse data {}", inputMessage, e);

В этом случае я хочу, чтобы заполнить {} с inputMessage, а также выхода из за StackTrace исключение.

Единственный способ, которым я могу видеть, чтобы сделать это было бы сделать это:

logger.error("Unable to parse data " + inputMessage, e);

, которая не очень.

ответ

94

Начиная с версии SLF4J 1.6, SLF4J будет интерпретировать последний параметр, как вы планировали, то есть в качестве исключения. Вы должны использовать более старую версию API SLF4J.

+0

Огромное спасибо за указание этого. – pjp

+5

Это описано в Javadoc? Я ожидал найти аналогичную информацию здесь: http://www.slf4j.org/apidocs/org/slf4j/Logger.html – Scot

+0

Я верю, но, как @Scot, я надеялся, что это поведение будет задокументировано. – Stephan

0

Он также работает с версией SLF4J 1.7. Поэтому вам не нужно деградировать до более старой версии.

+0

Это скорее комментарий, чем ответ. –