Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

백엔드 로그 개선 #741

Open
J-I-H-O opened this issue Nov 27, 2024 · 0 comments
Open

백엔드 로그 개선 #741

J-I-H-O opened this issue Nov 27, 2024 · 0 comments
Labels
Milestone

Comments

@J-I-H-O
Copy link
Contributor

J-I-H-O commented Nov 27, 2024

요구 사항

1. 예외 메시지가 중복되어 예외 원인을 파악하기 힘듦

1.1. As-is
image

  • 잘못된 값으로 요청 시 예외 메시지가 중복되어 원인 파악이 힘든 상황

1.2. To-be

2024-11-27T17:41:21.161+09:00  WARN 14504 --- [friendogly] [http-nio-8080-exec-1] c.h.friendogly.GlobalExceptionHandler    : 유효하지 않은 요청 값입니다. detail: [latitude: 위도는 -90도 이상 90도 이하로 입력해 주세요. [요청 값: -100.0], longitude: 경도는 -180도 이상 180도 이하로 입력해 주세요. [요청 값: -1000.0]]

org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [1] in public org.springframework.http.ResponseEntity<com.happy.friendogly.common.ApiResponse<com.happy.friendogly.playground.dto.response.SavePlaygroundResponse>> com.happy.friendogly.playground.controller.PlaygroundController.save(java.lang.Long,com.happy.friendogly.playground.dto.request.SavePlaygroundRequest) with 2 errors: [Field error in object 'savePlaygroundRequest' on field 'latitude': rejected value [-100.0]; codes [DecimalMin.savePlaygroundRequest.latitude,DecimalMin.latitude,DecimalMin.double,DecimalMin]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [savePlaygroundRequest.latitude,latitude]; arguments []; default message [latitude],true,-90.0]; default message [위도는 -90도 이상 90도 이하로 입력해 주세요.]] [Field error in object 'savePlaygroundRequest' on field 'longitude': rejected value [-1000.0]; codes [DecimalMin.savePlaygroundRequest.longitude,DecimalMin.longitude,DecimalMin.double,DecimalMin]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [savePlaygroundRequest.longitude,longitude]; arguments []; default message [longitude],true,-180.0]; default message [경도는 -180도 이상 180도 이하로 입력해 주세요.]] 
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:144)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:178)
...
  • 기존 API 응답을 활용해 한 눈에 확인하기 용이한 예외 메시지와 StackTrace를 함께 로깅하도록 변경

2. 로그에 담긴 정보 부족

  • 어떤 사용자가 보낸 요청인지 알 수 없음 (추후 사용자 문의에 대응할 수 있는 방안 X)
  • 로그만으로는 어떤 API로 들어온 요청이 실패한 것인지 파악하기 어렵고, 코드를 까봐야 함

3. 로그 보관 기간이 너무 짧음

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <maxHistory>30</maxHistory>
</rollingPolicy>
  • 현재 Logback에 설정한 보관 기간은 30일
  • 30일 동안 prod-a에 4.9MB, prod-b에 5.9MB의 로그가 쌓인 것을 확인
  • 현재 추가로 사용 가능한 디스크 용량은 각각 2.5GB, 2.2GB
  • 보관 기간을 늘려도 충분하지만, 최대한 디스크 용량을 절약하기 위해 일정 기간이 지난 로그는 압축시키는 방법도 있을 듯
  • 적절한 로그 보관 기간과, 압축할 기간을 정해야 함

image

@J-I-H-O J-I-H-O added the 🖥 backend backend label Nov 27, 2024
@J-I-H-O J-I-H-O added this to the Sprint7 milestone Nov 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: No status
Development

No branches or pull requests

1 participant