본문 바로가기
공부/Spring

[Spring][인프런 MVC 1편] 로그(logger) 사용법

by 웅대 2023. 3. 6.
728x90
반응형

본 포스팅은 김영한 강사님의 인프런 강의 "스프링 MVC 1편"을 정리한 포스팅으로 강의 자료에서 사용한 자료를 사용했음을 밝힙니다.

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

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

어떠한 정보를 출력하고 싶을 때 로깅 라이브러리를 사용하여 로그를 출력한다.

 

로그를 사용하기 위해서는 인터페이스인 SLF4J에서 LogBack과 같은 로그 라이브러리를 사용한다.

 

사용 방법은 다음과 같이 Logger를 생성하고 로그를 사용하면 된다.

@Controller
public class LogTestController {
    private final Logger log = LoggerFactory.getLogger(getClass());//내 클래스를 지정해줌
    @RequestMapping("/log-test")
    private String logTest() {
        log.info("hello world");
        return null;
    }
}

 

아니면 @Slf4j 어노테이션을 사용해도된다.

@Controller
@Slf4j
public class LogTestController {
    @RequestMapping("/log-test")
    private String logTest() {
        log.trace("log trace");
        log.debug("log debug");
        log.info("log info");
        log.warn("log warn");
        log.error("log error");

        return null;
    }
}

 

"/log-test"로 요청이 들어오면 "hello world"라는 문자를 가지고 있는 로그가 출력된다.

 

2023-02-25T01:16:17.619+09:00  INFO 18124 --- [nio-8080-exec-2] h.springmvc.basic.LogTestController      : hello world

 

순서대로 시간, 프로세스 아이디, 쓰레드, 컨트롤러, 데이터를 출력한다.

 

이렇게 로그는 많은 정보를 제공해주기 때문에 매우 유용하다.

 

로그는 출력할 때 레벨을 설정할 수 있다. 아래의 처럼 레벨을 정해서 출력해보면

 

@Controller
public class LogTestController {
    private final Logger log = LoggerFactory.getLogger(getClass());//내 클래스를 지정해줌
    @RequestMapping("/log-test")
    private String logTest() {
        log.trace("log trace");
        log.debug("log debug");
        log.info("log info");
        log.error("log error");
        log.warn("log warn");

        return null;
    }
}

그런데 5개의 로그를 출력하도록 했는데 세 개의 로그만 나오고 있다.

 

로그 레벨은 TRACE -> DEBUG -> INFO -> WARN -> ERROR 순서이다.

 

기본 값이 INFO이기 때문에 INFO와 하위 레벨 로그를 출력하는 것이다.

 

이는 application.properties에서 로그 레벨을 설정해서 출력 로그를 조정할 수 있다.

 

다음과 같이 trace로 설정하면 trace 하위 레벨을 모두 볼 수 있다.

logging.level.hello.springmvc=trace

debug로 설정하면 debug와 그 하위 로그 레벨을 출력할 것이다.

 

개발 서버에서는 debug로 두고 운영 서버에서는 info 레벨로 세팅한다.

 

그런데 로그에 어떠한 변수를 출력하고 싶을 때는 다음과 같이 하면 안된다.

log.trace("log test = " + test);

로그 레벨을 info로 설정했을 때는 trace가 출력되지 않는데 연산은 일어나기 때문에 불필요한 연산이 추가된 것이기 때문이다.

 

그래서 다음과 같이 사용한다.

log.trace("log test = {}", test);

 

728x90
반응형

댓글