Spring/기타

Logger

gunjoon98 2023. 10. 31. 20:12

Logging

Logging이란 애플리케이션의 로그를 기록하는 작업을 말하며 단순히 sysout로 화면에 출력하기보다는 로깅 프레임워크를 활용하는 것이 좋다. Logback, Log4j와 같이 다양한 로깅 프레임워크가 있으며, 로깅 프레임워크의 인터페이스 역할을 하는 SLF4J(Simple Logging Facade for Java)가 있다.

 

SLF4J를 사용한다면 구현체(Logback, Log4j)가 뭐든 클라이언트 코드는 바뀌지 않는다. 스프링 부트에서는 기본적으로 SLF4J와 Logback을 채택하고 있다.

 

아래는 SLF4J로 로그를 기록하는 코드이다.

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.mysql.cj.log.Slf4JLogger;

class LoggerTest {
	Logger logger = LoggerFactory.getLogger(LoggerTest.class);
	
	@Test
	void test() {
		logger.info("log를 남깁니다.");
		logger.error("error log를 남깁니다.");
	}
}

SLF4J는 로그를 중요도 혹은 메시지 종류에 따라 여러 개의 레벨로 구분한다. 로그를 레벨로 구분하고 로깅 설정을 해 필요한 로그의 레벨만 기록되도록 제어할 수 있다. 아래는 SLF4J의 로그 레벨이다.

  • TRACE : 가장 상세한 정보를 담은 로그, 애플리케이션의 실행 과정에서의 매우 상세한 디버깅 로그로 사용됨
  • DEBUG : 디버깅 로그
  • INFO(Default) : 일반적인 정보를 담은 로그
  • WARN : 경고 로그, 애플리케이션에 예기치 않은 상황이 발생했지만 심각한 문제는 아님
  • ERROR : 오류 로그, 애플리케이션에 심각한 문제 발생

ERROR가 가장 상위 레벨의 로그이며, TRACE가 가장 하위 레벨의 로그이다.