[advanced] 로그 추적기 - 요구사항 분석

myeonji·2022년 12월 20일
0

SpringAdvanced

목록 보기
3/4
  • 애플리케이션이 커지면서 모니터링과 운영이 중요해짐.
  • 어떤 부분에서 병목이 발생하는지, 예외가 발생하는지를 로그를 통해 확인하는 로그 개발이 필요함.
  • 로그를 미리 남겨둔다면 문제가 발생할 때 관련 부분을 손쉽게 찾을 수 있음.
  • 이 부분을 개선하고 자동화 해야 함.

요구사항

  • 모든 public 메서드의 호출과 응답 정보를 로그로 출력
  • 어플리케이션의 흐름을 변경하면 안됨
    • 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주 면 안됨
  • 메서드 호출에 걸린 시간
  • 정상 흐름과 예외 흐름 구분
    • 예외 발생시 예외 정보가 남아야 함
  • 메서드 호출의 깊이 표현
  • HTTP 요청을 구분
    • HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능
    • 트랜잭션 ID (DB 트랜잭션X), 여기서는 하나의 HTTP 요청이 시작해서 끝날 때까지를 하나의 트랜잭션 이라고 함

(예시)

정상 요청
[796bccd9] OrderController.request()
[796bccd9] |-->OrderService.orderItem()
[796bccd9] | |-->OrderRepository.save()
[796bccd9] | |<--OrderRepository.save() time=1004ms
[796bccd9] |<--OrderService.orderItem() time=1014ms
[796bccd9] OrderController.request() time=1016ms

예외 발생
[b7119f27] OrderController.request()
[b7119f27] |-->OrderService.orderItem()
[b7119f27] | |-->OrderRepository.save()
[b7119f27] | |<X-OrderRepository.save() time=0ms 
ex=java.lang.IllegalStateException: 예외 발생!
[b7119f27] |<X-OrderService.orderItem() time=10ms 
ex=java.lang.IllegalStateException: 예외 발생!
[b7119f27] OrderController.request() time=11ms 
ex=java.lang.IllegalStateException: 예외 발생!

0개의 댓글