nginxのログを一週間ごとにまとめたくて設定を見直したときのメモです。
設定
/var/log/nginx/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
意味
weekly | ログローテーションを週毎に行う |
missingok | ログファイルが見つからない場合でもエラーにしない |
rotate 52 | 52世代までログを保存 |
compress | ローテートしてログを圧縮 |
delaycompress | 1つ前のファイルはまだ圧縮しない。それ以外を圧縮。 |
notifempty | ログファイルが空ならローテーションしない。 |
create 640 nginx adm | 新た作成するログファイルの権限、ユーザ、グループを指定 |
sharedscripts | スクリプト宣言文。以降に記述された処理をワイルドカードの指定に関わらず、1度だけ実行する |
postrotate | ログローテーション実施後に実行される部分 |
参考
Nginx - ログローテーション設定! - mk-mode BLOG
Ubuntu に nginx をインストールした際の logrotate のデフォルト設定が間違ってる! - Qiita