Lombok 라이브러리에서 제공하는 어노테이션.
클래스 내부에 SLF4J(Simple Logging Facade for Java) 기반의 로깅 객체를 자동으로 생성해 주는 기능을 함.
즉, @Slf4j를 클래스에 추가하면, log라는 이름의 Logger 객체가 자동으로 생성되며, 이를 통해 로깅을 쉽게 사용할 수 있음.
1. @Slf4j 사용법
@Slf4j 적용 및 사용 예제
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogExample {
public static void main(String[] args) {
log.info("Hello, this is an INFO log message!");
log.debug("Debugging details here.");
log.warn("Warning message!");
log.error("Something went wrong!");
}
}
실행 결과 (로그 출력 예제)
[INFO ] 2025-01-29 12:00:00.123 [main] LogExample - Hello, this is an INFO log message!
[DEBUG] 2025-01-29 12:00:00.124 [main] LogExample - Debugging details here.
[WARN ] 2025-01-29 12:00:00.125 [main] LogExample - Warning message!
[ERROR] 2025-01-29 12:00:00.126 [main] LogExample - Something went wrong!
2. @Slf4j의 역할과 장점
2.1. SLF4J란?
- SLF4J(Simple Logging Facade for Java)는 로그 라이브러리들의 공통 인터페이스 역할을 하는 라이브러리.
- 직접적으로 로깅을 하지 않고, Logback, Log4j, java.util.logging 등 다양한 로깅 프레임워크와 연결할 수 있음.
2.2. Lombok의 @Slf4j가 제공하는 장점
- 코드 간결화
- 기존의 LoggerFactory.getLogger(클래스명.class)를 사용할 필요 없이, 간단하게 @Slf4j를 선언하는 것만으로 log 객체를 자동으로 생성해줌.
- SLF4J 기반의 로깅 제공
- @Slf4j를 사용하면 SLF4J 인터페이스를 사용하여 유연한 로깅이 가능함.
- 즉, Logback, Log4j2, java.util.logging 등 어떤 로깅 프레임워크를 사용하든 일관된 방식으로 로깅 가능.
- Spring Boot에서 기본적으로 지원됨
- Spring Boot에서는 기본적으로 SLF4J와 Logback을 사용하므로 @Slf4j와 매우 잘 맞음.
- 추가 설정 없이 바로 사용 가능.
3. @Slf4j vs LoggerFactory 직접 사용
@Slf4j 없이 직접 LoggerFactory를 사용하는 경우:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogExample {
private static final Logger log = LoggerFactory.getLogger(LogExample.class);
public static void main(String[] args) {
log.info("Hello, this is an INFO log message!");
}
}
이렇게 직접 Logger 객체를 선언하는 방식보다 Lombok의 @Slf4j를 사용하면 코드가 훨씬 간결해짐.
4. @Slf4j 사용 시 주의할 점
4.1. Lombok이 설치되지 않은 경우
• @Slf4j는 Lombok이 필요하므로, Lombok이 설정되지 않았다면 컴파일 에러가 발생함.
• IntelliJ에서 Lombok 플러그인을 설치하고, annotationProcessor 설정을 추가해야 함.
4.2. 로그 출력 레벨 설정
Spring Boot에서 로그 레벨을 조정하려면 application.properties 또는 application.yml에서 설정 가능.
예제 (application.yml)
logging:
level:
root: info
com.example: debug
이렇게 설정하면, com.example 패키지의 로그는 DEBUG 이상부터 출력되지만, 기본적으로는 INFO 레벨만 출력됨.
5. @Slf4j와 다른 Lombok 로깅 어노테이션 비교
Lombok은 @Slf4j 외에도 다양한 로깅 어노테이션을 제공함:
어노테이션 | 설명 |
@Slf4j | SLF4J(Simple Logging Facade for Java) 사용 |
@Log4j2 | Apache Log4j2 사용 |
@Log | java.util.logging(JUL) 사용 |
@CommonsLog | Apache Commons Logging 사용 |
@Flogger | Google Flogger 사용 |
예제:
import lombok.extern.log4j.Log4j2;
@Log4j2
public class LogExample {
public static void main(String[] args) {
log.info("This is a Log4j2 log message.");
}
}
Spring Boot에서는 기본적으로 SLF4J + Logback 조합을 사용하므로 @Slf4j를 가장 많이 사용함.
6. 요약
- @Slf4j는 Lombok이 제공하는 자동 로깅 객체 생성 어노테이션으로, log 객체를 쉽게 사용할 수 있도록 도와줌.
- SLF4J 인터페이스를 기반으로 작동하므로, 다양한 로깅 프레임워크(Logback, Log4j2 등)와 연결할 수 있음.
- Spring Boot 환경에서 기본적으로 사용되며, 설정 없이 바로 활용 가능함.
- @Slf4j를 사용하면 LoggerFactory.getLogger()를 직접 호출할 필요 없이 더 간결한 코드 작성이 가능함.
- 로그 레벨은 application.yml 또는 application.properties에서 조정할 수 있음.
출처 : ChatGPT
'BE > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] REST Docs + Asciidoctor (0) | 2025.02.15 |
---|---|
[Spring Boot] JaCoCo (Java Code Coverage) (1) | 2025.02.10 |
[Spring Boot] QueryDSL (1) | 2025.02.07 |
[Spring Boot] @Scheduled (0) | 2025.02.05 |
[Spring Boot] SpringDoc (0) | 2025.01.28 |