[Spring] Spring과 Log

haram·2023년 6월 14일
0

System.out.print() 대신 Log를 사용하는 이유는 무엇일까?

  • System.out.print()에 비해 오버헤드가 적다.
  • 시간, 로그레벨, 발생한 클래스등 더 자세한 정보를 알 수 있다.
  • 로그 내용을 파일에 남기기 간편하다.
  • 원하는 레벨의 로그만 확인가능하다.

로그를 구성하는 요소

  • logger클래스 : 로그 출력여부를 설정된 로그 레벨에 따라 결정하고 appender에 로그 정보를 전달
  • appender클래스 : 로그정보를 출력할 위치를 결정하는 클래스(파일, 콘솔, DB등등)
  • layout클래스 : 로그정보의 출력 형식을 결정(HTML형식, XML형식, 사용자 정의 형식 등등)

로그 레벨(아래로 갈수록 로그의 레벨이 높음)

TRACE : 가장 하위레벨의 로그
DEBUG : 디버그 용도로 사용
INFO : 런타임시에 발생하는 동작을 나타낼 때 사용
WARN : 오류가 발생할 가능성이 존재하는 경우 사용
ERROR : 오류가 발생한 경우 사용
FATAL : 프로그램이 강제로 종료될 만한 오류인 경우 사용

logger의 계층구조

  • logger는 계층구조를 가지고 모든 logger의 최상위 logger는 root logger이다. logger가 따로 지정되지 않은 경우 root logger에서 설정된 방식으로 로그를 출력한다

spring에서 log4j 적용

  1. pom.xml에 log4j의존성 설정이 되었는지 확인
  2. src/main/resources 폴더 아래 log4j.xml 파일 생성
  3. < appender>태그안에 < layout>태그를 작성하여 로그를 출력할 위치와 방식을 설정한다
  4. < logger>태그에 logger를 추가할 패키지와 출력할 로그레벨을 설정한다
  5. < root>태그를 통해 root logger을 설정한다.

로그가 설정된 대로 출력되지 않았던 이유

  • Src/test/resource에 같은 같은 이름의 log4j.xml파일이 존재 했는데 해당 파일에서 로그레벨을 수정하니 정상적으로 출력했다. 따라서 Src/main/resource의 log4j.xml의 설정을 사용하기 위해 src/test/resource의 파일을 삭제했다

0개의 댓글