[커널아카데미] 백엔드 12기 26주차 - 파이널 프로젝트

jh5959·2025년 9월 19일

파이널 프로젝트

트러블 슈팅

트러블슈팅 보고서: 로그 조회 API에서 빈 결과 반환 문제

  • 기능명: 로그 조회 API
  • 엔드포인트: GET /v1/monitoring/logs
  • 기능 설명: executionId, logLevel, status, startDate, endDate 등의 조건으로 UNIFIED_LOGS 테이블에서 로그를 조회하는 기능

문제

  • 다음 URL로 API 호출 시,
    GET http://localhost:8080/v1/monitoring/logs?executionId=2002&logLevel=ERROR
  • 응답은 정상적으로 내려오나, logs 필드가 빈 배열로 반환됨:
{
  "executionId": 2002,
  "logs": []
}
  • DB에는 실제 로그가 존재한다고 생각했으나, 응답 결과가 비어 있음

원인 분석
1. 요청값 확인

  • LogSearchRequest 파라미터로 잘 바인딩됨
  • 서비스단에서 logLeveltoUpperCase() 처리하여 logLevel=ERROR로 Map에 저장
  1. 쿼리 조건 확인

    • MyBatis XML 쿼리에서 조건은 아래와 같이 구성됨:

      <if test="logLevel != null">
          AND log_level = #{logLevel}
      </if>
  2. 최종 원인

    • DB를 바꾼 후 커밋을 하지 않아, log_level의 변경이 반영되지 않았음(INFO -> ERROR)
    • 즉, 쿼리 조건은 정확했지만, 데이터 미반영으로 인해 결과가 없었던 것

해결 방법
COMMIT;

  • 이후 같은 API 호출에 대해 정상적으로 로그 리스트가 반환됨

회고

keep

  • API를 구현하고 있는 중
  • 테이블이 수정되면서 쿼리도 수정하고 있다

problem

  • 테이블이 계속 바껴서 확정을 짓고 개발을 진행하는게 효율적일 것 같다

Try

  • 이번주에 기본 구현 끝내기

0개의 댓글