본문 바로가기
기록/인프런

스프링 핵심 원리 - 고급편 | 로그 추적

by POWER_ESFJ 2023. 3. 14.

로그 추적기

정상요청, 예외 발생 로그 추적

응답 시간등을 측정

요구사항

  • 모든 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 를 호출해야 함