devops

Nginx 로그 날짜 별로 관리하기

yougeun 2024. 11. 24. 22:04
728x90

문제점

/var/log/nginx의 로그를 보면 access.log 1 , access.log 2와 같이 날짜 별로 로그가 나오지 않아 특정 날짜에 일어난 로그를 찾아보기 힘들다.

해결방안

로그 파일의 앞에 날짜를 붙혀 특정 날짜의 log를 쉽게 찾는다.

1. logrotate의 nginx 설정 파일 이동

sudo vim /etc/logrotate.d/nginx

2. 설정 파일 수정

(1) 수정 전

/var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

(2) 수정 후

/var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        dateext # 날짜 별로 정렬
        dateformat .%Y_%m_%d # 날짜형식
        extension .log # ./log 형식으로 생성 
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                invoke-rc.d nginx rotate >/dev/null 2>&1
        endscript
}

3. 수정파일 적용

sudo logrotate -f /etc/logrotate.d/nginx

4. 결과

오늘 날짜는 access.log에 저장되고 날짜가 지나면 이전 날짜의 로그파일은 날짜를 포함한 log 파일로 변경됨

728x90