SLF4J를 사용하여 자리 표시자를 사용하여 예외 및 메시지를 기록하는 방법


85

SLF4J를 사용하여 오류 메시지와 예외를 모두 기록하는 올바른 접근 방법은 무엇입니까 ?

이 작업을 시도했지만 예외 스택 추적이 인쇄되지 않습니다.

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

이 경우에는 내가 채우려 {}inputMessage예외 스택 추적을 로그 아웃뿐만 아니라.

이 작업을 수행하는 유일한 방법은 다음과 같습니다.

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

예쁘지 않습니다.


첫 번째 logger.error 라인은 slf4j 버전 1.7.25에서 원하는대로 작동합니다.
kiml42

답변:


131

SLF4J 버전 1.6부터 SLF4J는 마지막 매개 변수를 의도 한대로, 즉 예외로 해석합니다. 이전 버전의 SLF4J API를 사용해야합니다.


7
이것이 Javadoc에 설명되어 있습니까? 여기 유사한 정보를 찾기 위해 기다리고 있었다 : slf4j.org/apidocs/org/slf4j/Logger.html
스코틀랜드

2
나는 당신을 믿지만 @Scot처럼이 행동이 문서화되기를 바랐습니다.
Stephan

4
Scot, @Stephan-앞서 언급 한 행동은 여기 FAQ에 문서화되어있는 것 같습니다 .
Priidu Neemre

8
이것은 가장 잘 지키는 비밀과 같습니다. 지적 해 주셔서 감사합니다. 내 후속 질문은 왜 var-arg에서 이것이 가능하다는 사실을 숨기는 것입니까? 를 취하고 그 Throwable후에 var-arg를 갖는 새로운 오버로드 된 메서드를 생성 할 수없는 이유는 무엇 입니까? 삭제 문제가 있습니까? 마지막 인수로 예외를 전달하는 다른 라이브러리의 표준입니까?
gaoagong

7
이것은 (이후?) FAQ : slf4j.org/faq.html#paramException에 문서화되었습니다 . 이 기능이 더 명확하게 문서화되어야한다는 데 동의합니다.
Stephan202
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.