추가 작업 등록 - Phase 9. 실행 로그 및 DB 쿼리 로그

This commit is contained in:
2026-06-14 22:53:58 +09:00
parent 04b2a925bb
commit a8ee01ece9
+42
View File
@@ -359,6 +359,48 @@ chocoadmin/
- [x] 비인증 접근 차단 코드 확인 (`proxy.ts`, API route `auth()` 검사) - [x] 비인증 접근 차단 코드 확인 (`proxy.ts`, API route `auth()` 검사)
- [x] Docker 재시작 후 정상 동작 확인 절차 문서화 (`docs/phase/phase8.md`) - [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 범위 ## 10. MVP 범위