DOCS/journey/troubleshooting/250908_rb8001_logging_issues.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

87 lines
3.1 KiB
Markdown

# rb8001 로깅 시스템 미구현 문제
**작성일**: 2025-09-08
**작성자**: happybell80
**상태**: 구현 및 배포 완료 (12:27)
## 왜 이 문제를 풀어야 하는가
1. **프로덕션 로빙**: rb8001은 실제 사용자와 상호작용하는 메인 서비스 (테스트용 아님)
2. **모든 스킬 허브**: skill-email, skill-news, skill-slack 등 모든 외부 서비스 호출 경유
3. **크론 작업 중심**: 일일 브리핑, 헤드라인 등 정기 작업 실행 및 실패 추적 필수
4. **Slack 연동 핵심**: 사용자 명령어, DM, 채널 메시지 모두 rb8001이 처리
5. **Docker 로그 휘발성**: json-file 드라이버는 10MB x 3개만 보관, 이전 로그 소실
## 현재 상태
**구현된 것**:
- main.py:30 - `logging.basicConfig(level=log_level)` stdout 출력만
- docker-compose.yml:59 - `./logs:/code/logs:rw` 볼륨 마운트
- 컨테이너 내 /code/logs/rb8001_app.log - 2025-08-03 이후 업데이트 없음
**구현 안 된 것**:
- FileHandler 설정 없음
- 로컬 rb8001/logs 디렉토리 없음
- HDD 동기화 없음
## 기존 계획들 (문서화만 됨)
| 문서 | 제안 방법 | 구현 상태 |
|------|-----------|-----------|
| 250731_로그저장소_SSHFS | SSHFS로 51124→51123 HDD 마운트 | 미구현 |
| 250801_크론잡로그동기화 | 로컬 저장 후 크론잡으로 HDD 동기화 | 미구현 |
| 250729_서버백업로그관리 | 심링크로 SSD→HDD 연결 | 미구현 |
| 250716_robeing_db_separation | FileHandler로 파일 저장 | 미구현 |
| 360_로빙_컨테이너_경량화 | 호스트에서 HDD 심링크 | 미구현 |
## 결정 사항 (표준 방식)
1. **로깅 구조**: app/core/logger.py 모듈 생성 (main.py 직접 수정 X)
2. **핸들러 구성**: StreamHandler + RotatingFileHandler 동시 사용
3. **로테이션**: 10MB 단위 (TimedRotating보다 예측 가능)
4. **포맷**: JSON 구조화 로그 (분석/파싱 용이)
5. **HDD 저장**: 우선 로컬 파일 로깅 구현, HDD 동기화는 별도 작업
## 즉시 확인 필요
1. 서버에서 실제 HDD 경로 존재 여부: /mnt/hdd/logs/
2. SSHFS 설정 여부
3. 크론잡 등록 여부
## 구현 방안 (업계 표준)
```python
# app/core/logger.py 생성
import logging.handlers
import json
def setup_logging():
# 1. StreamHandler (콘솔)
console = logging.StreamHandler()
# 2. RotatingFileHandler (파일 - 10MB 로테이션)
file_handler = logging.handlers.RotatingFileHandler(
'/code/logs/rb8001.log',
maxBytes=10*1024*1024, # 10MB
backupCount=30
)
# 3. JSON 포맷터
formatter = logging.Formatter(
'{"time":"%(asctime)s","level":"%(levelname)s","msg":"%(message)s"}'
)
# 4. Uvicorn 통합
logging.getLogger("uvicorn").propagate = True
logging.basicConfig(handlers=[console, file_handler],
level=logging.INFO)
```
## 구현 결과
1. app/core/logger.py 생성 완료
2. 로그 파일 7.6KB 생성 확인 (재시작 후 유지)
3. JSON 포맷 정상 작동
4. 볼륨 마운트 정상 (./logs:/code/logs)
5. **HDD 동기화**: 크론잡으로 매일 03:00 자동 백업 (250801 구현 완료)