[MVC] 6-1. 스프링 MVC 기본 기능_로깅
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (김영한) 강의 수강 후 정리한 자료입니다.
❗스프링 MVC 기본 기능: 로깅❗
✨ 로깅
다양한 로깅 라이브러리가 있고, 그것을 통합한 slf4j 라이브러리를 사용한다. slf4j는 인터페이스므로, 구현체로 Logback을 선택한다.
로그 사용법
package hello.springmvc.basic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LogTestController {
// 내 클래스 지정
private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest() {
String name = "Spring";
log.trace("trace long={}", name);
log.debug("debug long={}", name);
log.info(" info log={}", name);
log.warn(" warn log={}", name);
log.error(" error log={}", name);
return "ok";
}
}
@RestController
일반적인 @Controller의 경우, 반환 값이 String이면 뷰 이름으로 인식된다. 따라서 뷰가 렌더링되는 반면, @RestController은 HTTP 메시지 바디에 바로 입력하므로써, 위 코드의 실행 결과로 “ok”를 받을 수 있다.
cf) @Controller로 선언한 경우 위 코드의 실행 결과로 파일명이 “ok”인 뷰를 찾는다.
로그 선언
- private final Logger log = LoggerFactory.getLogger(getClass());
- @Slf4j : 롬복 사용
로그 레벨
LEVEL: TRACE > DEBUG > INFO > WARN > ERROR
- log.trace()
- log.debug() : 디버그할 때 봄
- log.info() : 중요 정보
- log.warn()
- log.error()
기본 로깅 레벨이 info()로 설정되어 있으므로 trace와 debug는 따로 보이지 않는다.
이를 다 보이게 설정하려면, application 설정 파일에서 따로 설정을 해 주어야 한다.
// application.properties
// trace 레벨부터 확인 -> 5가지 레벨이 전부 나옴
logging.level.hello.springmvc=trace
// debug 레벨부터 확인 -> trace를 제외한 로그 레벨 출력
logging.level.hello.springmvc=debug
개발 서버에서는 debug로, 운영 서버에서는 대개 info 레벨로 많이 남긴다.