2月 102010
 

nginxでapacheで日付風のログを出力する方法がないかなぁと考えてたのでメモ程度に
logrotateを使うしかないのですが dateextオプションをつけるとlogrotateが走った日時の日付になります
結構強引ですがこうすればいけます
logrotate用の設定ファイル


/var/log/nginx/access_log {
    dateext
    rotate 365
    missingok
    postrotate
        /bin/kill -USR1 `/bin/cat /var/run/nginx.pid 2>/dev/null` 2>/dev/null || true
        /bin/mv /var/log/nginx/access_log-`date '+%Y%m%d'` /var/log/nginx/access_log.`date '+%Y%m%d' -d '1days ago'`
    endscript
}

postrotateのところでmvしてるだけですが意外と思いつかなかったのでメモ
あとnginxでrotateするときはHUPではなくてUSR1なので注意が必要です
rotateの時間は00:00ぴったりがおすすめです

参考
Gmane — Mail To News And Back Again