system.out.prinln()
대신에 로깅 라이브러리 사용!
로그 라이브러리에는 수 많은 종류가 있는데 이것들을 통합해서 인터페이스로 제공하는 것이 SLF4J
테스트
- 로그 출력 포멧
: 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지
- 로그 레벨
TRACE > DEBUG > INFO > WARN > ERROR
개발 서버는 debug부터
운영 서버는 info부터
--> 상황에 맞게 log level 조절 가능
--> 시스템 아웃 콘솔에만 출력하는 것이 아니라 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있음
--> 성능도 더 뛰어남(내부 버퍼링, 멀티 쓰레드 등)
--> 로그 설정
--> properties에 다음과 같이 로그 레벨 설정
--> properties 설정 안해주면 기본으로 info 부터 로그 출력
--> SlF4j 롬복 쓰면 다음과 같은 객체 선언 필요 없음
log.trace("trace log={}",name) vs log.trace("trace log="+name)
log.trace 호출 전에 '+' 연산이 먼저 실행됨.
--> 의미없는 연산이 실행됨
매핑 정보
- @Controller 는 반환값이 String 이면 뷰 이름으로 인식된다. 따라서 뷰를 찾고 뷰가 렌더링 된다
- @RestController 는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메시지 바디에 바로 입력된다. 따라서 실행 결과로 ok 메시지를 받을 수 있다. 이는 @ResponseBody와 관련이 있다.