- 스프링 부트 라이브러리에는 spring-boot-starter-logging라이브러리가 포함되어 있음

- slf4j, logback을 사용함

- slf4j는 로깅과 관련된 기능을 제공하는 인터페이스이고, logback은 slf4j를 구현

 

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;

//@Slf4j
@RestController
public class LogTestController {

    private final Logger log = LoggerFactory.getLogger(getClass());

    @RequestMapping("/log-test")
    public String logTest(){
        String name = "SpringLogTest";
        log.trace("trace log={}", name);
        log.debug("debug log={}", name);
        log.info("info log={}", name);
        log.warn("warn log={}", name);
        log.error("error log={}", name);
        return "ok";
    }

}
2021-05-30 18:32:24.965  INFO 15364 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController  : info log=SpringLogTest
2021-05-30 18:32:24.969  WARN 15364 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController  : warn log=SpringLogTest
2021-05-30 18:32:24.969 ERROR 15364 --- [nio-8080-exec-1] hello.springmvc.basic.LogTestController  : error log=SpringLogTest

 

- 로그 LEVEL : TRACE > DEBUG > INFO(기본) > WARN > ERROR

application.properties

#logging.level.root=info

# hello.springlog하위 패키지에 info 레벨 설정
logging.level.hello.springlog=info

 

- 로그레벨을 설정하여 원하는 대로 조정할 수 있음 (개발서버에는 DEBUG로 설정, 운영서버에는 INFO로 설정)

- 시간, 로그레벨, 쓰레드, 클래스 명과 같은 부가적인 정보들을 볼 수 있음

- 콘솔출력 뿐 아니라, 파일, 네트워크 전송 등 별도로 기록할 수 있음

- 파일로 저장하는 경우 날짜나 용량으로 나눠서 저장할 수 있음

- System.out출력보다 성능이 좋음