๋ฌธ์ ์ํฉ
Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ค ๋ณด๋ฉด ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ๋์์ ์ฌ๋ฌ ์์ฒญ์ด ๋ค์ด์ด
- Controller, Service, Repository, Filter, ExceptionHandler์์ ๋ก๊ทธ๊ฐ ์ฐํ
- ๋ก๊ทธ๊ฐ ์๋ก ์์
๋ก๊ทธ์ธ ์ฑ๊ณต - memberId=1
ํ์๊ฐ์ ์ฑ๊ณต - memberId=3
๋๋ค์ ์ค๋ณต
JWT ์ธ์ฆ ์ฑ๊ณต
-> ์ด๋ค ์์ฒญ์์ ๋ฐ์ํ ๋ก๊ทธ์ธ์ง ๊ตฌ๋ถํ ์ ์์
ํด๊ฒฐ ์ ๋ต - ์์ฒญ ๋จ์ Trace ID
- ์์ฒญ๋ง๋ค ๊ณ ์ ํ ID๋ฅผ ์์ฑํ๊ณ ํด๋น ์์ฒญ์์ ๋ฐ์ํ๋ ๋ชจ๋ ๋ก๊ทธ์ ๋์ผํ ID๋ฅผ ํฌํจ์์ผ์ ํด๊ฒฐ
- ์ด๋ฅผ Correlation ID, TraceId ๋ผ๊ณ ํจ
- ์คํ๋ง์์๋ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด MDC๋ฅผ ์ฌ์ฉ
MDC๋ ๋ฌด์์ธ๊ฐ?
- MDC (Mapped Diagnostic Context)๋ SLF4J์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ
- ThreadLocal ๊ธฐ๋ฐ (JVM ๋ด๋ถ์ ์ ์ฅ๋จ)
- ํ์ฌ ์ค๋ ๋์ key-value ๋ฐ์ดํฐ ์ ์ฅ
- ๋ก๊ทธ ํจํด์์ %X{key}๋ก ์ถ๋ ฅ ๊ฐ๋ฅ
MDC.put("traceId", "abc123");
-> ํด๋น ์ค๋ ๋์์ ์ฐํ๋ ๋ก๊ทธ์ traceId๋ฅผ ์๋์ผ๋ก ํฌํจ์ํฌ ์ ์์
TraceIdFilter ๊ตฌํ
- OncePerRequestFilter
- ์์ฒญ๋น ํ ๋ฒ๋ง ์คํ
- MDC.put()
- ํ์ฌ ์์ฒญ ์ค๋ ๋์ traceId ์ ์ฅ
- MDC.clear()
- ๋ฐ๋์ finally์์ ์ ๊ฑฐ (ํฐ์บฃ ์ค๋ ๋๋ ์ฌ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ)
@Component
public class TraceIdFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain chain
) throws ServletException, IOException {
try {
String traceId = UUID.randomUUID()
.toString()
.replace("-", "");
MDC.put("traceId", traceId);
chain.doFilter(request, response);
} finally {
MDC.clear();
}
}
}
๋ก๊ทธ ํจํด ์ค์
- application.yml์ traceId ์ถ๋ ฅ ์ค์ ์ ์ถ๊ฐ
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] [%X{traceId}] %-5level %logger - %msg%n"
-> %X{traceId} ์ค์ ์ด ์์ด์ผ MDC์ ์ ์ฅ๋ traceId๊ฐ ์ถ๋ ฅ๋จ
์ค์ ๋ก๊ทธ ์ถ๋ ฅ ์์
- ์ด์ ์ค ํน์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋
- traceId ๊ธฐ์ค์ผ๋ก ๋ก๊ทธ ๊ฒ์
- ์์ฒญ ํ๋ฆ ์ ์ฒด ์ถ์ ๊ฐ๋ฅ
2026-02-17 12:30:01 [http-nio-8080-exec-1] [a8f3c9e1d4...] INFO MemberService - ๋ก๊ทธ์ธ ์ฑ๊ณต - memberId=1
2026-02-17 12:30:01 [http-nio-8080-exec-1] [a8f3c9e1d4...] DEBUG JwtFilter - JWT ์ธ์ฆ ์ฑ๊ณต
'Backend > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Spring] ๋ก๊น ๋ ๋ฒจ(Logging Level) (0) | 2026.02.17 |
|---|---|
| [Spring] Bearer ํ ํฐ ์ธ์ฆ ๊ตฌ์กฐ ์ดํดํ๊ธฐ (0) | 2026.02.11 |
| [Spring Security] ์ธ์ฆ(Authentication), ์ธ๊ฐ(Authorization) ๊ฐ๋ ๊ณผ ์ฐจ์ด (0) | 2026.02.10 |
| [Spring] @RequiredArgsConstructor์ final ํ๋์ ๊ด๊ณ ์ ๋ฆฌ (0) | 2026.02.10 |
| [Spring] API gateway (2) | 2026.01.26 |