spring-boot-starter-logging
가 함께 포함된다//선언
private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)
//lombok
@Slf4j
//호출
log.info("hello");
LogTestController
package hello.springmvc.basic;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//http body 에 string 을 넣어줌
// 기존 Controller 와 차이 있음
@RestController
@Slf4j //private... Logger 선언 귀찮을 때 대체할 수 있음
public class LogTestController {
// private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest(){
String name = "Spring";
//앞으로 이런방식 권장하지 않음
System.out.println("name = " + name);
log.trace(" trace my log="+ name);
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";
}
}
application.properties
# 전체 로깅 레벨 설정(기본 info)
logging.level.root=info
# hello.springmvc 패키지와 그 하위 로그레벨 설정
#logging.level.hello.springmvc=trace
#logging.level.hello.springmvc=debug
# 운영에서 info 레벨 사용
logging.level.hello.springmvc=info
log.debug("data="+data");
log.debug("data = {},data);
부가 정보
를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.로그 레벨
에 따라 개발 서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.별도의 위치
에 남길 수 있다. 특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.성능
도 일반 System.out보다 좋다. (내부 버퍼링, 멀티 쓰레드 등등) 그래서 실무에서는 꼭 로그를 사용해야 한다.