<<log level>>
FATAL |
아주 심각한 에러가 발생한 상태를 나타낸다. |
ERROR |
어떠한 요청을 처리하는 중 문제가 발생한 상태를 나타낸다. |
WARN |
프로그램의 실행에는 문제가 없지만, 향후 시스템 에러의 원인이 될수 있는 경고성 메시 지를 나타낸다. |
INFO |
어떠한 상태변경과 같은 정보성 메시지를 나타낸다. |
DEBUG |
개발시 디버그 용도로 사용하는 메시지를 나타낸다. |
TRACE |
디버그 레벨이 너무 광범위한것을 해결하기 위해서 좀 더 상세한 이벤트를 나타낸다. |
<<설정파일 log4j.xml>>
보통 개발 할 때는 info, debug로 낮은 레벨로 정의하여 사용한다. (디버그를 위해)
하지만 실제 서비스시에는 많은 양의 로그를 찍는것은 시스템 효율상 좋지 않으므로 보통 error로 로깅 레벨을 변경하고 파일을 저장한다.
info 레벨부터 상위 모든 레벨의 로그를 찍겠다는 의미이다.
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
</root>
따라서 코드가 다음과 같다면
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.debug("debug 222222222222222222222222222222222222222");
logger.info("info 333333333333333333333333333333333333");
logger.warn("warn 555555555555555555555555555555555555555555555");
logger.error("error 4444444444444444444444444444444444444444444444444");
로그에는 다음과 같이 info이상의 레벨만 찍히게 된다.
INFO : com.aaa.aaa.HomeController - info 333333333333333333333333333333333333
WARN : com.aaa.aaa.HomeController - warn 555555555555555555555555555555555555555555555
ERROR: com.aaa.aaa.HomeController - error 4444444444444444444444444444444444444444444444444
<<log가 찍히지 않아요>>
혹시 logger가 찍히지 않아요 하는 분들이 계시다면
log4j.xml의 Root Logger 옵션 value가 off인지 아닌지 확인해보세요~~~~~~~~
off로 설정되어 있다면 logger가 찍히지 않는답니다.
<<log가 두번 찍혀요>>
또한, 자식 logger에서 로그 이벤트가 발생하면 부모에게도 전달이 되는데 이런 구조때문에 logger가 2번씩 찍힌다? 하는 경우가 생긴다.
이런경우 로그의 사이즈도 매우 커지고 이런저런 문제가 생기므로
additivity="false" 라는 속성을 주어 해결할 수 있다.