로그 추적기
정상요청, 예외 발생 로그 추적
응답 시간등을 측정
요구사항
- 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력
- 애플리케이션의 흐름을 변경하면 안됨
- 로그를 남긴다고 비지니스 로직의 동작에 영향을 주면 안됨
- 메서드 호출에 걸린 시간
- 정상 흐름과 예외 흐름 구분
- 메서드 호출의 깊이 표현
- HTTP 요청을 구분
- HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 함
- 트랜잭션 ID(DB 트랜잭션X), 여기서는 하나의 HTTP 요청을 트랜잭션이라고 함
누가 잘 만들어놓으면 다른 사람들은 잘 쓰겠죠
물론 모니터링 툴을 도입하면 많은 부분이 해결되지만, 지금은 학습이 목적이라는 점을 명심하자
애플리케이션의 모든 로그를 남겨도 되요.
로그 추적기 V1 - 프로토타입 개발
요구사항
모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력애플리케이션의 흐름을 변경하면 안됨로그를 남긴다고 비지니스 로직의 동작에 영향을 주면 안됨
메서드 호출에 걸린 시간정상 흐름과 예외 흐름 구분- 메서드 호출의 깊이 표현
- HTTP 요청을 구분
- HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 함
- 트랜잭션 ID(DB 트랜잭션X), 여기서는 하나의 HTTP 요청을 트랜잭션이라고 함
→ 가장 간단한 방법은 파라미터로 넘겨주는 것이다
로그 추적기 V2
요구사항
모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력애플리케이션의 흐름을 변경하면 안됨로그를 남긴다고 비지니스 로직의 동작에 영향을 주면 안됨
메서드 호출에 걸린 시간정상 흐름과 예외 흐름 구분메서드 호출의 깊이 표현HTTP 요청을 구분HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 함트랜잭션 ID(DB 트랜잭션X), 여기서는 하나의 HTTP 요청을 트랜잭션이라고 함
문제점
- TraceId 동기화를 위해 파라미터를 다 수정해야 함,
- 인터페이스가 있었다면 인터페이스도 모두 코드를 고쳐야 하는 상황임
- 로그가 처음 시작할 때는 begin 을 호출해야 하고, 그 다음부터는 beginSync 를 호출해야 함
'기록 > 인프런' 카테고리의 다른 글
실전! 스프링 부트와 JPA 활용2 - 컬렉션 조회 최적 (1) | 2023.05.10 |
---|---|
실전! 스프링 부트와 JPA 활용2 - 지연 로딩과 조회 성능 최적화 (2) | 2023.05.08 |
실전! 스프링 부트와 JPA 활용1 - 동적 쿼리 및 변경 감지와 병합 (0) | 2023.04.29 |
실전! 스프링 부트와 JPA 활용1 - 도메인 분석 설계 (0) | 2023.04.27 |
스프링 핵심 원리 - 고급편 | 쓰레드 로컬 및 디자인 패턴 (0) | 2023.03.15 |