何度か設定周りの作業を行ってたりするけど毎回調べなおしているのでメモ
/etc/logrotate.conf で/etc/logrotate.d/***以下のファイルをインクルードしている 共通設定は/etc/logrotate.conf
例としてnginxのログをローテートさせる際の設定
/etc/logrotate.d/nginx.conf
/var/log/nginx/*.log {
daily
missingok
rotate 180
dateext
delaycompress
notifempty
create 640 nginx root
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
ローテーションの間隔 daily:日ごと weekly:週ごと monthly:月ごと
- create
ローテーション後ログファイルを作成、所有者などを指定する
- lotate 180
ログを何世代分残すか、daily,logate 180の場合は180日分残す
- notifempty
ログファイルが空ならローテーションしない
- missingok
ログファイルが見つからなくてもエラーにしない
- compress
ローテーションされたログファイルを圧縮する
- delaycompress
一世代目は圧縮されない
a.log
a.log.1
a.log.2.gz
a.log.3.gz
こんな感じ
ちなみにこのdelaycompress、compressと併用しないとダメなようです。
てっきりdelaycompressだけで圧縮もやってくれるのかと思っていたら違いました。。。
- dateext
ローテーションされたファイルのサフィックスを日付形式にする
a.log-20131028
- sharedscripts ~ postrotate-endscript
ローテーション実施後に実行される部分
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
/etc/init.d/nginx reopen_logs
nginxの場合ログをローテーションする場合は上記どちらかのコマンドでローテーション出来るようです。
以上メモでした。