운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.
스프링 부트 라이브러리에는 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함되고, 기본으로 SLF4J, Logback을 사용한다.
로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다. SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다.
실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.
로그 선언
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)
@Slf4j: 롬복 사용 가능
로그 호출
log.info("hello")
System.out.println("hello")
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 = "Log test Project by Kms";
log.trace("trace log ={}",name);
log.debug("debug log ={}",name);
log.info("info log = {}",name);
log.warn("info log = {}",name);
log.error("error log = {}",name);
/* 로그를 사용하지 않아도 a+b 계산 로직이 먼저 실행됨, 이런 방식으로 사용하면 X
계산 로직이 먼저 실행되어서 불필요한 CPU, 메모리 사용으로 이어질 수 있다. */
log.debug("String concat log = " + name);
return "ok";
}
}
TRACE > DEBUG > INFO > WARN > ERROR@Slf4j로 변경log.debug("data="+data)log.debug("data={}", data)