From a8ee01ece9df93c30d2cdf9406ad873911f492e7 Mon Sep 17 00:00:00 2001 From: jisangs Date: Sun, 14 Jun 2026 22:53:58 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=9E=91=EC=97=85=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20-=20Phase=209.=20=EC=8B=A4=ED=96=89=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EB=B0=8F=20DB=20=EC=BF=BC=EB=A6=AC=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plan/project-plan.md | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/docs/plan/project-plan.md b/docs/plan/project-plan.md index acd71d9..15472d3 100644 --- a/docs/plan/project-plan.md +++ b/docs/plan/project-plan.md @@ -359,6 +359,48 @@ chocoadmin/ - [x] 비인증 접근 차단 코드 확인 (`proxy.ts`, API route `auth()` 검사) - [x] Docker 재시작 후 정상 동작 확인 절차 문서화 (`docs/phase/phase8.md`) +### Phase 9. 실행 로그 및 DB 쿼리 로그 + +> local/stage에서는 개발과 디버깅에 충분한 상세 로그를 남기고, production에서는 운영에 필요한 수준으로 로그 양과 민감정보 노출을 제한한다. + +- [ ] 로그 정책 정의 문서 작성 (`docs/phase/phase9.md`) + - [ ] 환경 구분: `local`, `stage`, `production` + - [ ] 로그 레벨 구분: `debug`, `info`, `warn`, `error` + - [ ] 로그 출력 형식: 사람이 읽기 쉬운 콘솔 출력 + 필요 시 JSON line 확장 가능 구조 + - [ ] 민감정보 마스킹 대상 정의: 비밀번호, 인증 토큰, 쿠키, DB 접속 문자열, secret, 개인정보성 필드 +- [ ] 서버 실행 로그 유틸 구현 + - [ ] 공통 logger 모듈 추가 (`lib/logger.ts`) + - [ ] request 단위 correlation id 생성 및 로그에 포함 + - [ ] API route 시작/종료, 처리 시간, status code, action 결과 기록 + - [ ] 인증 실패, 권한 없음, 유효성 검증 실패, 비즈니스 예외를 구분해 기록 +- [ ] DB query 로그 구현 + - [ ] Prisma query event 또는 Prisma Client 설정 기반 query 로깅 적용 + - [ ] local/stage: query문, params, duration, 결과 row/count 또는 요약 결과를 사람이 보기 쉬운 format으로 출력 + - [ ] production: query문 전체/결과 전체 출력 금지, duration, table/action 추정값, affected count, slow query 중심으로 출력 + - [ ] production slow query threshold 설정 (`DB_SLOW_QUERY_MS`) + - [ ] 결과 로그 최대 길이 제한 (`DB_LOG_RESULT_LIMIT`) 및 초과 시 truncate 표시 +- [ ] 환경변수 추가 + - [ ] `APP_ENV=local|stage|production` + - [ ] `LOG_LEVEL=debug|info|warn|error` + - [ ] `DB_QUERY_LOG=off|summary|full` + - [ ] `DB_SLOW_QUERY_MS` + - [ ] `DB_LOG_RESULT_LIMIT` +- [ ] 주요 API에 로그 적용 + - [ ] 로그인 성공/실패 로그 + - [ ] 마에스트로 목록/상세 조회 로그 + - [ ] 연장 신청 조회/승인/취소 로그 + - [ ] 업그레이드 신청 조회/승인/거절 로그 + - [ ] 중복 처리 방지로 `409` 반환 시 warning 로그 +- [ ] Docker/NAS 로그 운영 절차 문서화 + - [ ] `docker compose logs -f` 확인 방법 + - [ ] stage와 production의 권장 `.env` 로그 설정 예시 + - [ ] Nginx Proxy Manager access/error log와 애플리케이션 로그를 같이 확인하는 절차 +- [ ] 검증 + - [ ] local에서 query문과 결과 전체가 출력되는지 확인 + - [ ] stage에서 query문과 결과 전체가 출력되는지 확인 + - [ ] production 설정에서 결과 전체가 출력되지 않고 summary/slow query 중심으로 출력되는지 확인 + - [ ] 로그에 비밀번호, token, cookie, secret, DB password가 노출되지 않는지 확인 + --- ## 10. MVP 범위