본문 바로가기
지니와 매일 AI와 함께하기 지니와 매일 AI와 함께하기

AI API 로그 설계: 개인정보 없이 장애를 추적하는 7가지 방법

읽는 시간 약 9분

AI API 로그 설계는 생성형 AI 기능을 실제 서비스에 연결한 이후 안정적으로 운영하기 위해 반드시 필요한 작업입니다.

AI API를 연동하면 단순한 HTTP 요청 외에도 모델 응답 지연, 요청 제한, 토큰 사용량 증가, 인증 오류, 외부 서비스 장애 등 다양한 문제가 발생할 수 있습니다.

이런 문제를 분석하기 위해 로그를 남기게 되지만, 요청 내용을 그대로 기록하면 이름, 이메일, 전화번호, 고객 문의 내용과 같은 개인정보까지 로그에 저장될 수 있습니다.

운영 로그의 목적은 고객의 개인정보를 보관하는 것이 아니라 문제가 발생한 요청을 추적하고 원인을 분석하는 것입니다.

따라서 좋은 AI API 로그는 데이터를 많이 남기는 로그가 아니라, 개인정보를 최소화하면서도 장애를 충분히 분석할 수 있는 로그입니다.

이번 글에서는 개인정보를 불필요하게 기록하지 않고 AI API 장애를 추적하는 7가지 실무 방법을 살펴보겠습니다.

AI API 로그 설계에서 먼저 정해야 할 정보

AI API를 호출할 때 다음과 같은 정보가 존재할 수 있습니다.

사용자 이름
이메일
전화번호
프롬프트
AI 응답
모델 이름
응답 시간
HTTP 상태 코드
토큰 사용량
오류 코드

이 중 장애 분석에 실제로 필요한 값은 생각보다 많지 않습니다.

예를 들어 다음 정도만 있어도 대부분의 장애를 추적할 수 있습니다.

request_id
user_internal_id
model_name
status_code
latency_ms
input_tokens
output_tokens
error_code
created_at

반면 다음 정보는 로그에 직접 저장하지 않는 것이 좋습니다.

name
email
phone
address
prompt 전체
AI response 전체

1. 모든 AI 요청에 request_id를 부여한다

AI API 로그 설계의 가장 기본적인 방법은 각 요청에 고유한 request_id를 만드는 것입니다.

Python에서는 다음처럼 UUID를 사용할 수 있습니다.

import uuid

request_id = str(uuid.uuid4())

로그에는 다음과 같이 남길 수 있습니다.

request_id=8f21c7...
model=example-model
status=success

request_id가 있으면 개인정보 없이도 하나의 요청이 어떤 경로를 거쳤는지 추적할 수 있습니다.

예를 들어:

사용자 요청
↓
백엔드 처리
↓
AI API 호출
↓
DB 저장

각 단계에 같은 request_id를 기록하면 어느 구간에서 오류가 발생했는지 확인하기 쉬워집니다.

2. 프롬프트 원문 대신 메타데이터를 기록한다

AI API 장애를 확인하기 위해 사용자의 프롬프트 전체를 저장하는 경우가 있습니다.

예를 들어:

prompt="제 이름은 홍길동이고 전화번호는 010-1234-5678입니다..."

이렇게 기록하면 로그 자체가 개인정보 저장소가 됩니다.

대신 다음처럼 메타데이터만 남길 수 있습니다.

prompt_type=customer_support
prompt_length=382
language=ko

프롬프트의 목적과 길이 정도만 알아도 오류 분석에 도움이 되는 경우가 많습니다.

3. HTTP 상태 코드와 내부 오류 코드를 함께 남긴다

단순히 실패라고만 기록하면 원인을 찾기 어렵습니다.

따라서 HTTP 상태 코드와 내부 오류 코드를 구분하는 것이 좋습니다.

예:

400 BAD_REQUEST
401 AUTH_ERROR
429 RATE_LIMIT
500 PROVIDER_ERROR
TIMEOUT

로그 예시는 다음과 같습니다.

request_id=abc123
status_code=429
error_code=RATE_LIMIT

이 정도 정보만 있어도 외부 AI 서비스 요청 제한인지, 인증 문제인지 빠르게 판단할 수 있습니다.

4. AI API 응답 시간을 기록한다

AI API는 외부 서비스이기 때문에 응답 시간이 일정하지 않을 수 있습니다.

따라서 각 요청의 실행 시간을 기록하는 것이 좋습니다.

Python에서는 다음처럼 측정할 수 있습니다.

import time

started_at = time.time()

response = call_ai_api()

latency_ms = int(
    (time.time() - started_at) * 1000
)

로그:

request_id=abc123
latency_ms=842

평소 800ms 정도 걸리던 요청이 갑자기 8초 이상 걸린다면 외부 API나 네트워크 상태를 확인할 수 있습니다.

5. 토큰 사용량을 함께 기록한다

생성형 AI API는 요청 및 응답 토큰에 따라 비용이 증가할 수 있습니다.

따라서 다음 정보를 기록하면 운영에 도움이 됩니다.

input_tokens=450
output_tokens=210
total_tokens=660

토큰 사용량이 갑자기 증가했다면 다음을 의심할 수 있습니다.

  • 프롬프트 길이 증가
  • 예상보다 긴 AI 응답
  • 동일 요청 반복
  • 불필요한 대화 이력 포함

이는 개인정보 없이도 비용과 성능 문제를 분석할 수 있는 좋은 데이터입니다.

6. 이메일 대신 내부 사용자 ID를 사용한다

특정 사용자의 요청을 추적할 필요가 있을 때 이메일이나 전화번호를 로그에 기록하는 것은 피하는 것이 좋습니다.

예:

email=hong@example.com

대신 내부 식별값을 사용할 수 있습니다.

user_id=u_8f21d

이 값만으로도 요청을 구분할 수 있고, 실제 개인정보는 애플리케이션 데이터베이스에서 필요한 경우에만 확인할 수 있습니다.

7. 로그 보관 기간과 접근 권한을 함께 설계한다

로그를 안전하게 설계해도 무기한 저장하면 데이터가 계속 쌓입니다.

예를 들어 다음처럼 기준을 정할 수 있습니다.

일반 요청 로그: 14일
오류 로그: 30일
디버그 로그: 운영에서 비활성화
감사 로그: 내부 정책에 따라 별도 관리

또한 운영 로그 접근 권한도 제한하는 것이 좋습니다.

모든 개발자가 운영 로그 전체를 볼 필요는 없습니다.

역할에 따라:

  • 개발자: 필요한 오류 로그
  • 운영자: 시스템 운영 로그
  • 관리자: 전체 설정
  • 보안 담당자: 감사 로그

등으로 나누는 방식이 좋습니다.

AI API 로그 설계 예시

개인정보를 포함하지 않는 로그는 다음과 같이 구성할 수 있습니다.

request_id=abc123
user_id=u_8f21d
model=example-model
status_code=200
latency_ms=842
input_tokens=320
output_tokens=176
created_at=2026-10-12T15:30:00

반면 다음과 같은 로그는 피하는 것이 좋습니다.

name=홍길동
email=hong@example.com
phone=010-1234-5678
prompt=배송이 언제 도착하나요?

AI API 로그 설계 체크리스트

  • 요청마다 request_id를 만들고 있는가?
  • 이메일 대신 내부 user_id를 사용하는가?
  • 프롬프트 원문을 저장하고 있지 않은가?
  • HTTP 상태 코드를 기록하는가?
  • 내부 오류 코드를 구분하는가?
  • 응답 시간을 기록하는가?
  • 토큰 사용량을 기록하는가?
  • 로그 보관 기간이 정해져 있는가?
  • 로그 접근 권한이 제한되어 있는가?
  • 운영 환경에서 불필요한 DEBUG 로그를 끄고 있는가?

AI API 로그 설계의 핵심은 필요한 정보만 남기는 것이다

AI API 로그 설계에서 중요한 것은 로그 양을 늘리는 것이 아닙니다.

request_id, 상태 코드, 응답 시간, 토큰 사용량, 오류 코드처럼 장애 분석에 필요한 기술적인 정보만 제대로 기록해도 대부분의 운영 문제를 추적할 수 있습니다.

반면 이름이나 연락처, 프롬프트 원문을 그대로 저장하면 개인정보 관리 범위만 커질 수 있습니다.

결국 좋은 AI API 로그는 장애는 빠르게 추적할 수 있으면서 개인정보는 가능한 한 남기지 않는 로그입니다.

jinii
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.