logrotate 備忘録

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
}