Spring Boot를 사용할 때 로깅의 중요성

Soo·2024년 3월 8일
post-thumbnail

개발자들은 문제가 발생했을 때 로그를 보며 많은 시간을 보냅니다. 그러므로 로그는 문제를 해결할 수 있는 단서를 가지고 있기 때문에 매우 중요합니다.

로깅에는 몇 가지 단계가 있습니다.

TRACE : 상세한 로그 레벨로, 애플리케이션의 실행 흐름을 디버깅하기 위해 사용됩니다.

DEBUG : 디버깅 목적으로 사용되며, 애플리케이션의 실행 중에 중요한 정보를 기록합니다.

INFO : 애플리케이션의 주요 이벤트를 기록하는 데 사용됩니다.

WARN : 경고성 메시지를 기록하는 데 사용됩니다.

ERROR : 심각한 오류를 기록하는 데 사용됩니다.

FATAL : 가장 심각한 오류를 기록하는 데 사용됩니다.

지금부터 로그를 사용해 보겠습니다.

application.properties에 log 레벨을 debug로 해보겠습니다.

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
logging.level.org.springframework=info
logging.level.soowan.study.springboot.myfirstwebapp=debug

LoginController

import org.slf4j.Logger; 를 사용해서 logging을 해보겠습니다.

package soowan.study.springboot.myfirstwebapp.login;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class LoginController {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @RequestMapping("/login")
    public String gotoLoginPage(@RequestParam("name") String name, ModelMap model) {
        model.put("name", name);
        logger.debug("Request Param is {}", name);
        System.out.println("Request Param is " + name);
        return "login";
    }
}

결과

log가 제대로 출력된 걸 볼 수 있습니다.

그렇다면 log 레벨을 info로 변경을 하고 요청을 한다면 어떻게 될까요??

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
logging.level.org.springframework=info
logging.level.soowan.study.springboot.myfirstwebapp=info

결과

LoginController에서 log.debug 로 파라미터를 logging하기 때문에 log가 찍히지 않았습니다.

application.properties에서 로그 레벨 설정을 info 로 하면 info 보다 심각한 오류들만 나오게 됩니다. debug는 info보다 상세한 내용을 제공하기 때문에 log가 찍히지 않았던 것이죠.

이렇게 많은 로그 레벨을 사용해서 적절하게 사용할 수 있어야합니다.

예를들어, 개발환경에서는 debug 레벨을 사용하거나 프로덕션에서는 info를 사용합니다.

기본적으로 spring-boot-starter-web은 spring-boot-starter-logging을 전이 의존하고 있습니다.

Spring Boot가 사용하는 기본 로깅 프레임워크는 SLF4j를 사용하는 Logback입니다.

이번 기록에서는 간단하게 로깅에 대해 알아보았습니다.

나중에 개발 고수가 된다면 더 깊은 내용의 로깅으로 돌아오겠습니다~

0개의 댓글