Logging Settings by Logrotate

■ nginx の logrotate 設定

今回 squeeze 上に導入した nginx/1.4.1 では特に設定の必要なし。 以下は既定の設定である。

1
2
3
4
5
6
7
8
9
10
11
12
13
/var/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

対象となるログは以下である。
/var/log/nginx/access.log
/var/log/nginx/error.log

参考サイト:
http://www.mk-mode.com/octopress/2013/02/17/nginx-logrotation/


■ unicorn の logrotate 設定

rails アプリの logrotate 用設定ファイルを /etc/logrotate.d/[rails_app] に設定する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/home/philippos/[rails_app]/log/unicorn.*.log {
  daily
  missingok
  rotate 60
  dateext

  # 圧縮設定 (次回のログ循環まで保留)
  compress
  delaycompress

  # unicorn master プロセスへ USR1 シグナル送信
  lastaction
    pid=/home/philippos/[rails_app]/tmp/pids/unicorn.pid
    test -s $pid && kill -USR1 "$(cat $pid)"
  endscript
}

上記設定の場合、日次でログ循環し、過去のログファイルは60世代まで確保される。 日付が付けられた過去のログファイルは圧縮される。

○補追

daily

日次でログ循環する。週次の場合は weekly、月次の場合は monthly を設定する。

missingok

ログファイルが存在しない場合でもエラーとしない。

rotate n

n 世代までログファイルを保持する。

dateext

過去のログファイルに日付(YYYYMMDD)を付加する。

○logrotate のオプションについて

logrotate 設定テスト

1
$ /usr/sbin/logrotate -d /etc/logrotate.d/[rails_app]

cron に依らず手動で logrotate してみたい場合

1
$ /usr/sbin/logrotate -f /etc/logrotate.d/[rails_app]

参考サイト:
https://github.com/phusion/unicorn/blob/master/examples/logrotate.conf
http://linux.kororo.jp/cont/server/logrotate.php