JAVA · 예외처리
로깅 (SLF4J / Logback)
SLF4J 로깅 퍼사드와 Logback 구현체로 체계적인 로깅을 구현합니다.
예외처리중급SLF4JLogback로깅Logger
핵심 설명
SLF4J 로깅 퍼사드와 Logback 구현체로 체계적인 로깅을 구현합니다.
Java code
// SLF4J + Logback 의존성:
// org.slf4j:slf4j-api:2.0.9
// ch.qos.logback:logback-classic:1.4.14
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
// SLF4J 표준 사용법 (의사코드)
class OrderService {
// private static final Logger log =
// LoggerFactory.getLogger(OrderService.class);
void processOrder(String orderId) {
// log.info("주문 처리 시작: orderId={}", orderId);
// log.debug("주문 상세: {}", orderDetail);
// log.warn("재고 부족: product={}, stock={}", product, stock);
// log.error("주문 처리 실패: orderId={}", orderId, exception);
}
}
// java.util.logging (JDK 내장) 대안
import java.util.logging.*;
public class LoggingDemo {
private static final Logger log =
Logger.getLogger(LoggingDemo.class.getName());
public static void main(String[] args) {
// 레벨: SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST
log.info("애플리케이션 시작");
log.warning("메모리 사용량 높음");
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
log.log(Level.SEVERE, "계산 오류", e);
}
// 조건부 로깅 (비용 절약)
if (log.isLoggable(Level.FINE)) {
log.fine("비용 큰 연산 결과: " + expensiveCalc());
}
}
static String expensiveCalc() { return "결과"; }
}학습 팁
SLF4J의 {} 플레이스홀더는 문자열 연결보다 효율적입니다. 로그 레벨이 비활성이면 문자열 생성을 건너뜁니다.
주의할 점
log.error("에러: " + e.getMessage())처럼 메시지만 기록하면 스택 트레이스를 잃습니다. 예외 객체를 마지막 인자로 전달하세요.
자주 묻는 질문
로깅 (SLF4J / Logback)란 무엇인가요?
SLF4J 로깅 퍼사드와 Logback 구현체로 체계적인 로깅을 구현합니다.
로깅 (SLF4J / Logback) 학습 시 주의할 점은 무엇인가요?
log.error("에러: " + e.getMessage()) 처럼 메시지만 기록하면 스택 트레이스를 잃습니다. 예외 객체를 마지막 인자로 전달하세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.