2011年8月18日木曜日

nginx のログローテート

nginx に シグナル USR1 を送信するとログファイルを開き直すので、これを利用します。

see: http://wiki.nginx.org/NginxLogRotation

実際には、USR1 を送信するシェルを書いて cron で定期実行させるか、logrotated を利用するかの方法があるかと思います。

今回は、logrotated を利用します。

vi /etc/logrotate.d/nginx


/opt/nginx/logs/access.log {
    daily
    dateext
    rotate 365
    missingok
    ifempty
    sharedscripts
    postrotate
        test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
        /bin/mv /opt/nginx/logs/access.log-`date '+%Y%m%d'` /opt/nginx/logs/access.log.`date '+%Y%m%d' -d '1days ago'`
    endscript
}


0 件のコメント:

コメントを投稿