logrotate周りの設定
/work/hoge/log/*.log { daily rotate 7 compress }
なんかこんな感じ設定する時にあれ?これ何意味するんだけって?毎回調べてる気がするのでメモ
設定一覧
http://www.linuxcommand.org/man_pages/logrotate8.html
上記にかいてあるがよく使うであろうものをかく
daily
毎日ログローテーションする。毎週は weekly
, 毎月は monthly
missingok
対象先のファイルがなくてもエラーをはかせない
逆は nomissingok
ifempty
ログファイル自体が空でもローテーションする
逆は notifempty
compress / nocompress
ローテーションされたログをgzipで圧縮するかどうか
compress
は圧縮するよで nocompress
は圧縮しないよ
直感的!
rotate
何世代のこすかみたいな設定
exp: rotate 5
dateext
ローテートされたファイルは hoge.log.1
みたいに保存される
これを指定することでこれを hoge.log-YYYYMMDD
の形式で保存してくれる
copytruncate
logrotateのローテートさせる時の動きとしては元あるファイルをリネームして元あったファイルを生成する。
ただRailsみたいにlogをにぎったままのものは、この動きだとリネームされた方を参照してしまう
Railsを再起動させる手もあるが、 copytruncate
をすると元あるファイルをコピーして元あるファイルの中身を空にします
size
ログが指定されたサイズ以上であればローテーションする
exp: size 100k
設定例
/work/log/hoge.log
というログを毎日(daily), development.log-[YYYYMMDD]
(dateext) というフォーマットで
5世代(rotate 5
)圧縮して(compress)残す
ログ自体はコピーして元あったファイルを空にする(copytruncate)
ただしファイルがない時もあるのでエラーは出さないようにしよう(missingok)
/work/log/development.log { daily dateext rotate 5 missingok compress copytruncate }