티스토리 뷰

 

로깅 라이브러링

- 스브링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함되고,

이는 기본적으로 SLF4J와 Logback를 사용한다. 지금 보니까 log4j 포함되어 있다

 

* 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다

쉽게 이야기해서 SLF4J는 인터페이스, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다

(실무에서는 Logback 많이 쓴다함)

 

 

package hello.springmvc.basic;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
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")
    private String logTest(){
        String name="Spring";

        System.out.println("name : " + 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";
    }
}

- @RestController

   @Controller는 반환 값이 String이면 뷰 이름으로 인식되어 뷰를 찾고 뷰가 랜더링 된다

   @RestController는 반호나 값으로 뷰를 찾는 것이 아니라 HTTP바디에 바로 입력함 -> 따라서 실행결과로 'ok' 값을          받을 수 있음

- @Slf4j : 롬복 사용이 가능하다. 이를 쓰면 로그 선언을 따로 안해줘도 된다.

 

 

 

로그출력 포맷 : 날짜, 시간, 로그레벨, 프로세스ID, 쓰레드명, 클래스명, 로그메세지

LEVEL : TRACE > DEBUG > INFO > WARN > ERROR

* 기본은 INFO로 설정되어 있어 TRACE와 DEBUG는 출력 X, TRACE와 DEBUG도 보고싶다면 application.properties에서 레벨 설정을 해서 출력되는 로그를 조절할 수 있다

 

 

application.properties

#전체 로그 레벨 설정(기본 info)
logging.level.root=info
#hello.springmvc 패키지와 그 하위 로그 레벨 설정
logging.level.hello.springmvc=debug

보통 개발 서버는 DEBUG , 운영은 INFO로 설정

 

 

 

log.trace(" info trace "+ name);

* 로그 사용 시, 이렇게 연산자를 쓰면 안되는 이유

trace는 따로 설정한게 아니라면 출력도 안될건데 '+'연산이 실행되며, 그로인해 메모리와 cpu가 사용된다

즉, 쓸모없는 리소스를 사용해버리게 되는 꼴

 

 

 

강의 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday