스프링 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”인 뷰를 찾는다.

로그 선언

  1. private final Logger log = LoggerFactory.getLogger(getClass());
  2. @Slf4j : 롬복 사용

로그 레벨

LEVEL: TRACE > DEBUG > INFO > WARN > ERROR

  • log.trace()
  • log.debug() : 디버그할 때 봄
  • log.info() : 중요 정보
  • log.warn()
  • log.error()

image

기본 로깅 레벨이 info()로 설정되어 있으므로 trace와 debug는 따로 보이지 않는다.

이를 다 보이게 설정하려면, application 설정 파일에서 따로 설정을 해 주어야 한다.

// application.properties

// trace 레벨부터 확인 -> 5가지 레벨이 전부 나옴
logging.level.hello.springmvc=trace

// debug 레벨부터 확인 -> trace를 제외한 로그 레벨 출력
logging.level.hello.springmvc=debug

개발 서버에서는 debug로, 운영 서버에서는 대개 info 레벨로 많이 남긴다.

카테고리:

업데이트: