Skip to content

feat: 대용량 디버그 로그의 근본 원인 정제 지원 - #2

Merged
Seongbin-Choo merged 2 commits into
mainfrom
large-log-support
Sep 8, 2026
Merged

Seongbin-Choo merged 2 commits into
mainfrom
large-log-support

Conversation

@Seongbin-Choo

Copy link
Copy Markdown
Owner

문제

실제 Spring DEBUG 로그가 입력 제한을 쉽게 초과함

Spring Boot를 DEBUG로 실행하면 클래스패스, 컴포넌트 스캔, Condition Evaluation Report가 함께 출력되어 로그가 100,000자를 넘는 경우가 있습니다.

기존 백엔드는 프롬프트 준비 요청을 100,000자로 제한했습니다. 로그 정제를 목적으로 하는 도구가 긴 로그에서 다시 핵심 구간을 수동 선택하도록 요구해 사용자 경험과 기능 목적이 맞지 않았습니다.

첫 번째 Exception 또는 Error가 실제 원인이라는 보장이 없음

기존 정제기는 로그에서 처음 발견한 Caused by:, Exception, Error 문자열을 기준으로 잘랐습니다. 이 방식은 InvalidErrorException.class, ErrorMvcAutoConfiguration 같은 DEBUG 클래스명을 실제 오류로 오인하고, 뒤쪽에 있는 데이터베이스 연결 실패 등의 근본 원인을 제외할 수 있었습니다.

판단과 선택

원본 입력은 확대하고 LLM 입력은 제한

프롬프트 준비 API의 rawLog와 selectedText를 각각 최대 1,000,000자까지 허용했습니다.

제한을 없애는 방식은 선택하지 않았습니다. 비정상적으로 큰 요청이 메모리와 처리 시간을 점유하는 것을 막기 위해 입력 안전 한도는 유지하고, 민감정보 마스킹과 반복 압축을 적용한 뒤 LLM에 사용되는 정제 로그는 기존과 동일하게 최대 12,000자로 제한했습니다.

따라서 실제 개발 로그의 수용 범위는 넓히면서 LLM 토큰 비용과 프롬프트 크기는 증가시키지 않습니다.

가장 깊은 실제 원인을 우선

모든 오류 후보를 검사한 뒤 마지막 Caused by:를 가장 높은 우선순위로 사용합니다. 해당 항목이 없을 때만 실제 예외 선언, Exception in thread, Suppressed, 구조화된 ERROR, APPLICATION FAILED TO START를 순서대로 사용합니다.

패턴을 줄 시작과 예외 클래스 형태로 제한하여 DEBUG 출력에 등장하는 클래스명과 설정 클래스는 오류 앵커로 사용하지 않습니다.

변경 내용

  • 프롬프트 준비 로그 입력 한도를 각각 1,000,000자로 확대
  • 마지막이자 가장 깊은 Caused by: 중심으로 로그 정제
  • 실제 예외 선언과 Spring ERROR 로그 형식 fallback 지원
  • DEBUG 클래스명의 Error·Exception 오탐 방지
  • LLM용 정제 로그의 12,000자 제한 유지
  • 대용량 Spring DEBUG 회귀 테스트와 입력 경계 테스트 추가
  • README, HELP 및 프로젝트 가이드의 입력 제한과 정제 순서 정비
  • 백엔드 안내 문서를 국내 포트폴리오 독자 기준의 한국어로 통일

검증

  • 전체 백엔드 테스트 53개 통과, 조건부 테스트 3개 제외
  • 125,000자 이상의 Spring DEBUG 노이즈에서 가장 깊은 DataSource 원인 보존 확인
  • 1,000,000자 입력 허용 및 1,000,001자 입력 거부 확인
  • 정제 결과가 최대 12,000자를 넘지 않는지 확인
  • 2026-09-08 09:03:22 ERROR ... 형식 인식 확인
  • git diff --check 통과

호환성 및 운영 참고

  • API 응답 형식과 데이터베이스 스키마는 변경하지 않음
  • 별도 마이그레이션이나 환경변수 변경 없음
  • POST /api/v1/audit의 기존 100,000자 제한은 유지
  • 인터넷에 백엔드를 공개할 경우 애플리케이션 역직렬화 이전의 요청 본문 제한과 전역 또는 인증 기반 rate limit이 추가로 필요함
  • 플러그인 1.0.2가 확대된 입력 한도를 사용하므로 이 백엔드 변경을 먼저 배포해야 함

@Seongbin-Choo
Seongbin-Choo merged commit 374f6f4 into main Sep 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant