4.5. 로깅
4.5.1. 로깅 프레임워크
- SLF4J + Logback을 사용합니다. (Spring Boot 기본 제공)
System.out.println()을 로깅 목적으로 사용하지 않습니다.
4.5.2. 로그 레벨 정책
| 레벨 | 사용 기준 |
|---|---|
ERROR | 즉시 대응이 필요한 시스템 장애 |
WARN | 잠재적 문제, 비정상적이지만 서비스 운영 가능 |
INFO | 주요 비즈니스 이벤트, 애플리케이션 상태 변경 |
DEBUG | 개발 중 디버깅 정보 (프로덕션에서 비활성화) |
TRACE | 상세 흐름 추적 (프로덕션에서 비활성화) |
4.5.3. 로그 작성 규칙
- 로거는 클래스별로 선언합니다.
java
private static final Logger log = LoggerFactory.getLogger(UserService.class);- 또는 Lombok
@Slf4j어노테이션을 사용합니다. - 로그 메시지에 파라미터 바인딩을 사용합니다.
java
// 잘못된 예
log.info("사용자 생성: " + userId);
// 올바른 예
log.info("사용자 생성: userId={}", userId);- 예외 로깅 시 스택 트레이스를 포함합니다.
java
log.error("사용자 조회 실패: userId={}", userId, exception);4.5.4. 프로덕션 로그 포맷
xml
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>