6. 로그 사용법

김현준·2023년 7월 28일

Gaounuri_Spring_Study

목록 보기
7/10

Project Code File

📌 로그 사용하기

image

이번에는 로그 사용법에 대해 알아보자.

Slf4j 는 인터페이스고 이를 구현한 Logback 을 사용한다.

image

로그를 사용하면 System.out.println 과 달리
시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지를 알 수 있기 때문에 서버를 운영함에 있어서 필수적이다.

private Logger log = LoggerFactory.getLogger(getClass());
private static final Logger log = LoggerFactory.getLogger(Xxx.class)

로그를 사용하기 위해서는 위 코드를 사용해야한다.

@Slf4j

또는 @Slf4j 에노테이션을 사용해도 무관하다.

package hello.springmvc.basic;

@Slf4j
@RestController
public class LogTestController {

//    private final Logger log = LoggerFactory.getLogger(LogTestController.class);
//    Slf4j 가 위 코드를 대신해줌.

    @RequestMapping("/log-test")
    public String logTest() {
        String name = "Spring";

        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 를 사용하면 반환값으로 뷰를 찾지않고 반환값 자체를 HTTP 메시지 바디에 입력된다. 따라서 localhost:8080/log-test 로 들어가면 ok 가 출력된다. 이렇게 해두면 테스트하기 편하다.

📌 로그 레벨

로그에는 레벨이 존재한다.

TRACE > DEBUG > INFO > WARN > ERROR 와 같은 레벨로 되어있고 개발서버는 주로 debug 을 출력하고 운영서버는 INFO 를 출력한다. 기본값은 INFO

logging.level.hello.springmvc=debug
// logging.level.경로 = 레벨

로그 레벨을 설정하기 위해서는 application.properties 경로에 위의 코드를 추가해주면 된다.

INFO 를 설정하면 INFO 를 포함한 하위단계인 INFO , WARN , ERROR 가 출력이 된다.

운영서버에서 DEBUG 를 사용하지 않는 이유는 DEBUG 를 사용할시 꼭 필요한 정보가 아님에도 출력이 된다. 또한 너무 많은 정보로 인해서 오히려 원하는 내용을 찾기가 힘들어진다.

📌 올바른 로그 사용법

log.debug("data="+data)
log.debug("data={}", data)

로그를 사용할때는 + 연산으로 출력해서는 안되고 {} 를 이용해야 한다.
+ 를 사용하면 로그 출력 레벨을 info 로 설정해도 "data"+data 코드가 실행이 되어버려서 문자 더하기 연산이 발생한다. 따라서 불필요한 자원을 사용하게 된다.

📌 로그 사용시 장점

System.out.println 에 비해 쓰레드정보 , 클래스이름같은 부가정보를 알 수 있고 로그 레벨에 따라 개발서버는 모든 로그를 출력하고 운영서버는 출력하지 않는 등 상황에 맞게 조절가능하다.

또한 파일로도 로그의 기록을 저장할 수 있고 System.out 에 비해 속도도 빠르다.

profile
울산대학교 IT융합학부

0개의 댓글