실무에서 자주 사용하는 플로우
1. Logback으로 일정 기간/용량 단위로 로그 롤링 및 압축 (.gz)
2. 하루 1회, 백업 로그를 S3로 업로드
3. 업로드가 성공한 파일만 로컬에서 삭제
4. S3는 장기 보관 및 분석 용도로 사용
S3로 백업 후 로컬에서 삭제하는 이유
- 디스크 공간 확보: 로그는 쌓이기만 하므로 디스크를 가득 채움
- 로그 분석 분리: 실시간 운영 서버는 빠르게 돌아가야 하므로, 분석/보관은 S3에서 따로
- 보안 & 감사: S3에 백업되면 안전하고, 복구도 쉬움
구현 예시 (쉘 스크립트)
#!/bin/bash TODAY=$(date +%Y-%m-%d) FILES="logs/app.log.$TODAY*" for FILE in $FILES; do # S3로 업로드 if aws s3 cp "$FILE" s3://your-bucket-name/logs/ ; then echo "[OK] Uploaded $FILE, deleting locally" rm -f "$FILE" # 업로드 성공한 파일만 삭제 else echo "[FAIL] Failed to upload $FILE" fi done
이 스크립트를 cron에 등록해서 사용합니다.
주의 사항
- 삭제 조건: S3 업로드 성공 후에만 삭제해야 함 (실패하면 재시도 여지 남겨야 함)
- 실시간 로그는 삭제 금지: 아직 쓰고 있는 app.log는 절대 삭제하면 안 됨 (롤링된 .gz 파일만 삭제)
- S3에 날짜별 디렉토리 구조 권장logs/2025/06/10/app.log.0.gz처럼 분류하면 정리하기 편함
'Spring' 카테고리의 다른 글
[Spring] Logback 설정 (0) | 2025.06.10 |
---|---|
[Spring Boot 2] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석 (0) | 2024.07.05 |
[Spring Boot 3] 소나큐브(SonarQube), JaCoCo 연동하여 정적 분석 (1) | 2024.07.05 |
[Spring] JaCoCo를 통한 Code Coverage 측정 (0) | 2024.07.03 |
[Spring] JUnit5 테스트 코드 작성 (0) | 2023.10.06 |