2013-08-20 2 views
1

프로젝트에서 오류가 발생하는 경우 전자 메일을 보내려고합니다. 이를 위해 우리는 Log4j의 SMTPAppender을 사용하고 있습니다. 내가 개발 모드에서 내 프로젝트를 실행하고 SMTPAppender에서 다음 ConversionPattern를 사용하여 오류의 전체 스택 트레이스를 얻기 위해 노력하고 있어요 :Log4J 변환 지정자 "% l"전체 스택 추적을 인쇄하지 않습니다.

<param name="ConversionPattern" 
    value="[%d{ISO8601}] [%t] [%5p] [%c ] %n %m %l %X{config}"/> 

다음과 같이 내가 오류를 던지고 :

try { 
    throw new Exception(" To get the MDC values !!!"); 
} catch (Exception e) 
{ 
    LOGGER.error(" To get the MDC values !!!", e); 
} 

%m입니다 To get the MDC values !!!으로 대체되었지만 %l (소문자 L)으로 바뀌 었습니다. 줄 번호가있는 로깅 요청을하는 호출자의 정규화 된 클래스 이름을 인쇄합니다 (% c do와 동일). % l이하는 동안 % c는 줄 번호를 출력하지 않습니다).

스택 추적을 얻는 올바른 방법은 무엇이며 왜 %l은 전체 스택 추적을 얻지 못합니까?

+0

내 이전 답변에 대한 의견 대화를 토대로 귀하의 질문을 조정 해 주셨습니다. 누군가가 답변을 드리겠습니다. –

답변

0

%는 로깅 이벤트를 생성 한 호출자의 위치 정보를 출력하는 데 사용됩니다. 전체 스택 추적을 인쇄합니다. catch 블록에 다음 코드 행을 추가 할 수 있습니다.

catch (Exception e) { 
      CharArrayWriter cw = new CharArrayWriter(); 
      PrintWriter w = new PrintWriter(cw); 
      e.printStackTrace(w); 
      w.close(); 
      String trace = cw.toString(); 
    LOGGER.error(" To get the MDC values !!!",trace); 
} 
관련 문제