서버의 로그를 System.out.println()으로 남기게 되면 많은 오류가 발생한다.
1. 사용자가 급격하게 늘 경우 해당 로그를 다 콘솔에 찍어야 하므로 많은 부담이 된다.
2. 해당 출력이 어디서 출력되었는지 찾기가 힘들다.
그래서 실무에서는 System.out.println()을 이용하여 콘솔에 출력하는 것이 아닌 Slf4j를 이용해 서버 로그를 남긴다.
@RestController
public class LogTestController {
private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest() {
String name = "spring";
System.out.println("logger를 통한 log 출력");
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";
}
}
Slf4j에 있는 Logger를 통해 다음과 같이 로그를 콘솔 창에 출력하거나 파일에 저장할 수 있다.
사용된 쓰레드, 컨트롤러까지 친절하게 알려준다.
application.properties에 다음과 같이 설정해 패키지와 하위 로그 레벨도 설정할 수 있다.
# default = info
logging.level.hello.springmvc=debug
info로 설정하면 info, warn, error 레벨 출력
error로 설정하면 error 로그 레벨만 출력된다.
// @RestController : 문자 반환 시 스트링이 그대로 반환된다.
// @Controller : viewtemplate으로 이동
@RestController
@Slf4j
public class LogTestController {
@RequestMapping("/log-test")
public String logTest() {
String name = "spring";
System.out.println("logger를 통한 log 출력");
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";
}
}
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한님' 의 강의 내용을 정리한 것입니다.