Files
AutoCoinTrader2/docs/log_system_improvements.md
2025-12-09 21:39:23 +09:00

5.4 KiB
Raw Blame History

로그 시스템 개선 (2025-12-04)

검토: 로그 기능 운영상 개선 의견 적용 상태: 완료 파일: src/common.py


🔍 검토 의견 및 해결

1 실전 모드 로그 레벨 이슈 FIXED

문제점

# 이전 코드
effective_level = getattr(logging, LOG_LEVEL, logging.INFO if dry_run else logging.WARNING)

문제:

  • dry_run=False (실전 모드)일 때 로그 레벨을 WARNING으로 설정
  • src/order.py의 주문 성공/체결 로그는 INFO 레벨로 작성
  • 결과: 실전 모드에서 주문 성공 로그가 파일에 남지 않음

해결 방법

# 개선된 코드
effective_level = getattr(logging, LOG_LEVEL, logging.INFO)

변경 사항:

  • dry_run 값과 관계없이 INFO 레벨로 통일
  • 거래 관련 모든 중요 이벤트가 로그에 기록됨
  • 환경변수 LOG_LEVEL로 필요시 조정 가능

영향

구분 이전 개선 후
dry_run=True INFO INFO
dry_run=False WARNING ⚠️ INFO
결과 주문 로그 누락 주문 로그 완벽 기록

2 중복 로그 저장 이슈 FIXED

문제점

# 이전 코드
logger.addHandler(fh_size)      # 용량 기반 로테이션
logger.addHandler(fh_time)      # 일별 로테이션

문제:

  • 두 핸들러가 동시에 모든 로그를 기록
  • 같은 내용이 두 파일에 중복 저장
  • 디스크 낭비 (약 2배)

기존 파일:

logs/AutoCoinTrader.log              (fh_size 기록)
logs/AutoCoinTrader_daily.log        (fh_time 기록)
→ 내용 중복!

해결 방법

# 개선된 코드
logger.addHandler(fh_size)      # 용량 기반만 사용
# logger.addHandler(fh_time) 제거

변경 사항:

  • 용량 기반 로테이션(10MB)만 유지
  • 일별 로테이션 제거 (중복 제거)
  • 디스크 공간 절약

로테이션 정책 비교

항목 용량 기반 일별 최종 선택
자동 10MB마다 매일 10MB마다
백업 7개 유지 30개 유지 7개 유지
압축 .gz 압축 미압축 .gz 압축
디스크 효율적 낭비 선택됨

📊 로그 설정 최종 상태

로그 레벨

LOG_LEVEL = "INFO"  # 기본값 (환경변수로 조정 가능)

파일 로테이션 전략

최대 크기: 10MB/파일
백업 개수: 7개 보관
압축: 자동 .gz 압축
예상 용량: ~70MB (10MB × 7개, 압축 시 ~21MB)

로그 출력

콘솔: dry_run=True 일 때만
파일: 항상 (logs/AutoCoinTrader.log)

🔧 설정 커스터마이징

환경변수로 로그 레벨 조정

# 개발 환경 (모든 로그 기록)
set LOG_LEVEL=DEBUG

# 프로덕션 (중요 이벤트만)
set LOG_LEVEL=WARNING

# 기본값 (정보성 로그)
set LOG_LEVEL=INFO

프로그램 실행

# 기본 설정
python main.py

# 로그 레벨 변경
LOG_LEVEL=DEBUG python main.py

검증 체크리스트

이전 문제점 확인

  • 실전 모드에서 INFO 레벨 로그가 기록되는가?
  • 중복 로그 저장이 제거되었는가?
  • 디스크 공간 낭비가 해결되었는가?

기능 확인

  • 10MB마다 자동 로테이션 작동
  • 오래된 로그 .gz 압축
  • 7개 파일까지 백업 유지
  • dry_run 모드에서 콘솔 출력
  • 로그 메시지 형식 일관성

📈 기대 효과

1. 거래 감시 (Audit Trail)

  • 모든 주문, 체결, 취소 이벤트 기록
  • 매수/매도 신호 발생 이유 추적
  • 실전 모드에서도 완벽한 기록

2. 디스크 효율성

  • 중복 저장 제거로 디스크 공간 절약 (약 50% 감소)
  • 자동 압축으로 추가 절약 (~70%)
  • 전체 약 21MB로 7개 파일 보관 가능

3. 유지보수 용이성

  • 복잡한 이중 로테이션 제거로 관리 간단
  • 로그 레벨을 환경변수로 유연하게 조정
  • 명확한 문서화

📝 코드 변경 요약

src/common.py

- 로그 레벨: WARNING (실전) → INFO (통일)
- 핸들러: fh_size + fh_time → fh_size만 사용
- 로그 메시지: 일별 로테이션 언급 제거
+ 명확한 주석 추가: INFO 레벨 사용 이유
+ 환경변수 조정 가능성 명시

🚀 다음 단계

  1. 배포 전 테스트

    python main.py  # INFO 레벨로 실행
    # logs/AutoCoinTrader.log 확인
    
  2. 실전 배포

    python main.py  # 모든 거래 이벤트 기록됨
    
  3. 로그 모니터링

    • 1시간마다 로그 파일 크기 확인
    • 10MB 도달 시 자동 로테이션 작동 확인
    • 압축 파일 생성 확인

📚 참고 사항

로그 파일 위치

logs/AutoCoinTrader.log          (현재 활성 로그)
logs/AutoCoinTrader.log.1.gz     (압축 백업 1)
logs/AutoCoinTrader.log.2.gz     (압축 백업 2)
...
logs/AutoCoinTrader.log.7.gz     (압축 백업 7, 가장 오래된 파일)

로그 검색 방법

# 최근 로그 100줄 보기
tail -100 logs/AutoCoinTrader.log

# 특정 코인의 매수 신호 검색
grep "KRW-BTC" logs/AutoCoinTrader.log | grep "매수"

# 압축된 로그에서 검색
zcat logs/AutoCoinTrader.log.1.gz | grep "매도"

검토자: GitHub Copilot 개선 완료: 2025-12-04 상태: 프로덕션 준비 완료