좋은 질문이야!
Spring Framework에서 로깅(logging) 기능은 매우 중요하고, 보통 여러 로깅 라이브러리를 통합적으로 연결하여 사용하는 구조로 되어 있어.
Spring은 직접 로그를 찍지 않고, 로깅 추상화 (Logging Abstraction) 를 통해 외부 로깅 라이브러리와 연결돼.
즉, "Spring이 직접 log 찍지 않고, 중간 어댑터를 통해 찍는 것" 이 핵심이야.
SLF4J = Simple Logging Facade for Java[Spring Framework 코드]
↓ (로깅 API 호출)
SLF4J (Facade)
↓ (Bridge/Binding)
Logback / Log4j / Log4j2 / JUL
↓
콘솔 출력, 파일 저장 등
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyService {
private static final Logger logger = LoggerFactory.getLogger(MyService.class);
public void process() {
logger.info("처리 시작");
logger.debug("디버그 정보");
logger.warn("경고 발생");
logger.error("에러 발생");
}
}
| 조합 | 설명 |
|---|---|
| SLF4J + Logback (🔥 기본 추천) | Spring Boot 기본 세팅 (spring-boot-starter 포함) |
| SLF4J + Log4j2 | 대형 시스템에서 선호 |
| Spring Boot + JUL to SLF4J bridge | JDK 기본 로깅을 SLF4J로 연결 |
Logbackslf4j, logback-classic, jul-to-slf4j# 로그 레벨 설정 예시 (application.properties)
logging.level.root=INFO
logging.level.com.example=DEBUG
dependencies {
implementation 'org.slf4j:slf4j-api:2.0.7'
implementation 'ch.qos.logback:logback-classic:1.4.11'
}
| 개념 | 설명 |
|---|---|
| SLF4J | Spring이 사용하는 로깅 "중간자" (Facade) |
| Logback/Log4j2 | 실제 로그 출력 엔진 |
| Spring Boot | 기본으로 SLF4J + Logback을 내장하고 있음 |
| LoggerFactory.getLogger() | 로깅 객체 생성 방식 |
원하면 각 로깅 레벨(TRACE, DEBUG, INFO, WARN, ERROR)이나
Logback 설정 XML, JSON 로그 출력, 파일 저장 등도 자세히 알려줄 수 있어!
필요할까? 😊