Slf4j : 로깅에 대한 추상 레이어를 제공하는 인터페이스의 모음
인터페이스를 사용하여 로깅을 구현하면 추후에 로깅 라이브러리를 변경할 때 코드의 변경 없이 가능함.
프로젝트의 의존성 관리 도구에 Slf4j 라이브러리를 추가해야 함, Maven 기준으로 아래와 같이 추가할 수 있음
<dependencies>
<!-- Slf4j API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.32</version> <!-- 최신 버전으로 업데이트 가능 -->
</dependency>
<!-- 로깅 구현체 (예: Logback) -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version> <!-- 최신 버전으로 업데이트 가능 -->
</dependency>
</dependencies>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Slf4jExample {
// 클래스마다 Logger 인스턴스 생성
private static final Logger logger = LoggerFactory.getLogger(Slf4jExample.class);
public static void main(String[] args) {
// 로그 메시지 출력
logger.info("Hello, Slf4j!");
try {
// 예외 발생 시 에러 레벨 로그 출력
throw new RuntimeException("Oops! Something went wrong.");
} catch (Exception e) {
logger.error("Exception caught:", e);
}
}
}
라이브러리 추가
Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 Slf4j API와 구현체(예: Logback)를 프로젝트에 추가합니다.
Logger 인스턴스 생성
클래스마다 Logger 인스턴스를 생성합니다. LoggerFactory.getLogger() 메서드에는 해당 클래스를 전달하여 Logger 인스턴스를 가져옵니다.
로그 메시지 출력
logger.info(), logger.error()와 같은 메서드를 사용하여 로그 메시지를 출력합니다.
로그 레벨에 따라 다양한 메서드를 사용할 수 있습니다.
예외 로깅
예외가 발생한 경우 logger.error("Exception caught:", e);와 같이 예외 정보를 함께 로깅할 수 있습니다.
로그 설정
로깅 설정은 각 로깅 구현체에 따라 다를 수 있습니다. 대부분의 경우 logback.xml 또는 logback.xml과 같은 설정 파일을 통해 로깅을 커스터마이징할 수 있습니다.
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@Slf4j
public class TestController {
@GetMapping("/")
public String String(String str){
try {
str.toString();
} catch (NullPointerException e){
log.trace("가장 디테일한 로그");
log.warn("경고");
log.info("정보성 로그");
log.debug("디버깅용 로그");
log.error("에러",e);
}
return "test";
}
}