목차
Spring Boot에서 로깅의 중요성
Spring Boot로 개발할 때 로깅은 디버깅, 트러블슈팅, 모니터링, 보안 등 모든 영역에서 필수적인 요소입니다.
특히 사용자 요청(request)과 응답(response) 정보를 기록하면 이슈 분석이 훨씬 쉬워지고, 시스템 안정성을 높일 수 있습니다.
AOP(Aspect Oriented Programming) 관점지향프로그래밍

AOP는 공통관심사(로깅, 트랜잭션 등)를 핵심 비지니스 로직과 분리해서 관리하는 프로그래밍 기법입니다.
- 장점:
- 서비스, 컨트롤러, 레포지토리 등 모든 계층에 적용 가능
- 메서드 실행 전/후 예외 발생 시점 등 다양한 포인트에서 로깅 가능
- 코드중복 최소화
Interceptor 인터셉터

인터셉터는 HTTP 요청/응답의 전/후처리를 담당합니다.
Spring MVC의 HandlerInterceptor를 구현해서
컨트롤러 진입전(preHandle),
컨트롤러 수행 후(postHandle),
요청 완료 후(afterCompletion)
세 가지 시점에서 작업을 할 수 있습니다.
- 장점:
- 웹 요청/응답 중심의 로깅에 특화
- 인증, 권한 체크, 공통 응답 처리 등에 적합
AOP와 Interceptor의 차이점

| AOP | Interceptor | |
| 적용 범위 | 모든 Spring Bean (서비스, 레포지토리 등) | HTTP 요청/응답 (웹 계층) |
| 실행 시점 | 메서드 호출 전/후, 예외 발생 시 | 컨트롤러 진입 전/후, 요청 완료 후 |
| 주요 활용 | 트랜잭션, 로깅, 성능 측정, 보안 등 | 인증/인가, 공통 응답 처리, 로깅 |
| 성능 | 프록시 생성으로 약간의 오버헤드 | 상대적으로 가벼움 |
로깅코드 예시

다음은 ADMIN 권한으로 changeUserRole 메서드를 호출할 때 요청 body, 요청 시각, 요청 URL, 요청 id를 로깅하는 예시입니다.
- 요청 시각과 요청 URL은 인터셉터에서
- 요청 body와 요청 id는 AOP 로깅으로 처리하였습니다.
1. AOP를 활용한 로깅 예시

예시코드(@Aspect, @Slf4j, @Pointcut, @Around)


2. 인터셉터를 활용한 로깅 예시

예시코드(implements HandlerInterceptor, preHandle())


예시코드(WebConfig에 등록하는 상황)

언제AOP, 언제Intrerceptor를 써야할까?
- 비지니스 로직 전체(서비스,레포지토리 등)에서 공통 처리 -> AOP 추천
- 웹 요청(HTTP) 전/후에만 처리 -> Interceptor 추천
- 로깅/트랜잭션/성능측정 등 다양한 시점 필요 -> AOP 추천
- 인증, 헤더 검사, 응답 변환 등 HTTP에 특화 -> 인터셉터 추천
'프레임워크 > Spring' 카테고리의 다른 글
| JWT, Spring security (0) | 2025.06.23 |
|---|---|
| 테스트코드 알아보기 (0) | 2025.06.12 |
| 필터에서 예외처리 (0) | 2025.06.12 |