본문 바로가기

SpringMVC

[인프런 강의 복습]스프링 MVC 1편 - 로깅

■ 로깅 라이브러리

스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함
스프링 부트 로깅 라이브러리는 기본으로 다음 로링 라이브러리를 사용

- SLF4J - http://www.slf4j.org
- Logback -http://logback.qs.ch


- 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리 
- 즉, SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택해서 사용하면 된다. 
- 실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용

[로그 사용 시 장점]
- 쓰레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고 출력 모양얼 조정
- 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력, 운영 서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절
- 파일이나 네트워크 등 로그를 별도의 위치에 남길 수 있다. 특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능

 

■ LogTest

[로그 선언 방법]
- private Logger log = LoggerFactory.getLogger(getClass());
- private static final Logger log = LoggerFactory.getLogger(Xxx.class);
- @Slf4j : 롬복 사용

[테스트]
- 로그가 출력되는 포멧 : 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스 명, 로그 메시지
- 로그 레벨 : TRACE > DEBUG > INFO > WARN > ERROR
- 개발 서버 : DEBUG
- 운영 서버 : INFO

[로그 레벨 설정]
- application.properties
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;


@RestController
@Slf4j  //Logger 객체를 자동으로 생성해준다.
public class LogTestController {

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

    @RequestMapping("/log-test")
    public String logTest(){

        String name = "String";

        // log의 level
        log.trace("trace log={}", name);
        /**
         * 이럴 경우, 로그 레벨을 debug로 설정해도 출력이 되지 않을 뿐, 
         * + 연산이 이루어져서 필요없는 리소스를 사용하게 된다.
         */
//        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";
    }
}