logrotate를 통해 로그 로테이션 적용하기.
nginx 이미지 만들면서 시행착오 끝에 만들어낸 설정값입니다 ㅎㅎ
기본적으로 적은기간의 logroate 라면 아래와같은 보편적인 설정값을 사용할텐데요.
/var/log/nginx/*.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
저같은경우 추가적인 사항
- log 뒤에 날짜가 표시될것
- 5년 보관할것.
- 트리구조로 보관할것 (년 -> 월 폴더안에 일별)
요정도였습니다.
기본 logrotate 옵션으로는 잘 안됐는데 스크립트성 내용을 추가해주니 잘 되네요. (갓 지피티..)
/var/log/nginx/*.log {
monthly
rotate 60
missingok
notifempty
dateext
dateformat -%Y-%m-%d.log
postrotate
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
DEST_DIR="/var/log/nginx/$YEAR/$MONTH"
if [ ! -d "$DEST_DIR" ]; then
mkdir -p "$DEST_DIR"
fi
mv /var/log/nginx/access.log-* "$DEST_DIR/"
gzip "$DEST_DIR/access.log-$YEAR-$MONTH-$DAY"*
[ ! -f /var/run/nginx.pid ] || kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
무튼 이런식으로 만들어주면 됩니다 ㅎ