Java의 Log4J, Slf4J 및 몇 가지 다른 로깅 프레임 워크에는 두 가지 "개발자"레벨의 로깅이 있습니다.
- 디버그
- 자취
설명이 명확하기 때문에 DEBUG의 기능을 이해합니다.
DEBUG 수준은 응용 프로그램을 디버깅하는 데 가장 유용한 세분화 된 정보 이벤트를 지정합니다.
그러나 TRACE 레벨은 유스 케이스에 대해 구체적이지 않습니다.
TRACE 레벨은 DEBUG보다 세분화 된 정보 이벤트를 지정합니다.
(출처 : log4J JavaDoc )
TRACE를 언제 어떻게 사용하는지 알려주지 않습니다. 흥미롭게도 이것은 syslog standard에 정의 된 심각도 수준이 아닙니다 . TRACE와 DEBUG의 차이점에 대한 인터넷 검색은 "DEBUG를 사용하십시오. 아, TRACE도 있습니다". TRACE 수준에 대한 특정 사용 사례를 찾을 수 없습니다. 내가 찾은 최고 는 레벨의 존재에 대한 장점을 토론하는 이 오래된 위키 페이지 였습니다 .
이것은 건축가로서 내 머리 속에 많은 깃발과 질문을 제기합니다. 젊은 개발자가 내 아키텍처에 TRACE를 추가하도록 요청한 경우 다음과 같이 질문을합니다.
- DEBUG가 아닌 TRACE로 기록해야하는 정보의 예는 무엇입니까?
- 해당 정보를 기록하여 어떤 특정 문제를 해결합니까?
- 이 예 에서 DEBUG 레벨이 아닌 TRACE 레벨에서의 로깅 을 명확히 구분 하는 로깅 된 정보의 특성은 무엇 입니까?
- 해당 정보가 로그 인프라를 통과해야하는 이유는 무엇입니까?
- 해당 정보를 단순히 사용하는 것이 아니라 로그 저널에 유지하면 어떤 이점이
System.out.println
있습니까? - 디버거보다는 로그를 사용하는 것이 더 좋은 이유는 무엇입니까?
- 해당 정보를 단순히 사용하는 것이 아니라 로그 저널에 유지하면 어떤 이점이
- TRACE 레벨에서 로깅의 표준 예는 무엇입니까?
- 예제에서 DEBUG 대신 TRACE 레벨에서 로깅하여 얻은 특정 이점은 무엇입니까?
- 그 이익이 왜 중요한가?
- 반대로 : DEBUG 대신 TRACE에 로깅하면 어떤 문제를 피할 수 있습니까?
- 다른 문제를 어떻게 해결할 수 있습니까? TRACE 수준에서 로깅하는 것이 다른 솔루션보다 나은 이유는 무엇입니까?
- 프로덕션 레벨에 TRACE 레벨 로그 명령문이 남아 있어야합니까? 왜?
그러나 대부분의 주요 프레임 워크에 존재한다고 가정하면 뭔가 유용하다고 생각합니다. 그렇다면 ... TRACE는 무엇이며 DEBUG와 다른 점은 무엇입니까?