Spring Framework에서 로깅(logging) 기능

moon.kick·2025년 4월 17일

좋은 질문이야!
Spring Framework에서 로깅(logging) 기능은 매우 중요하고, 보통 여러 로깅 라이브러리를 통합적으로 연결하여 사용하는 구조로 되어 있어.


✅ Spring Framework에서의 Logging 구조

Spring은 직접 로그를 찍지 않고, 로깅 추상화 (Logging Abstraction) 를 통해 외부 로깅 라이브러리와 연결돼.
즉, "Spring이 직접 log 찍지 않고, 중간 어댑터를 통해 찍는 것" 이 핵심이야.


✅ 핵심 개념: SLF4J = Simple Logging Facade for Java

  • Spring Framework는 내부적으로 SLF4J를 사용해 로깅 코드를 작성함.
  • 실제 출력은 Logback, Log4j, Log4j2, java.util.logging (JUL) 등으로 연결됨.

✅ Logging 구성요소 흐름

[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 bridgeJDK 기본 로깅을 SLF4J로 연결

✅ Spring Boot에서 자동 설정되는 로그 시스템

  • 기본: Logback
  • 자동 제공: slf4j, logback-classic, jul-to-slf4j
# 로그 레벨 설정 예시 (application.properties)
logging.level.root=INFO
logging.level.com.example=DEBUG

✅ build.gradle 예시 (Spring Boot 아니고 직접 설정 시)

dependencies {
    implementation 'org.slf4j:slf4j-api:2.0.7'
    implementation 'ch.qos.logback:logback-classic:1.4.11'
}

✅ 결론 요약

개념설명
SLF4JSpring이 사용하는 로깅 "중간자" (Facade)
Logback/Log4j2실제 로그 출력 엔진
Spring Boot기본으로 SLF4J + Logback을 내장하고 있음
LoggerFactory.getLogger()로깅 객체 생성 방식

원하면 각 로깅 레벨(TRACE, DEBUG, INFO, WARN, ERROR)이나
Logback 설정 XML, JSON 로그 출력, 파일 저장 등도 자세히 알려줄 수 있어!

필요할까? 😊

profile
@mgkick

0개의 댓글