logrotateの設定メモ
仕事で小さなプログラムを書くことになり、その出力ログを管理するために簡単なlogrotateの設定を行った。そのときのメモ。
cat <<'EOT' | sudo tee /etc/logrotate.d/foo > /dev/null /path/to/log/foo.log { missingok monthly rotate 36 compress ifempty create 0664 bar bar dateext } EOT
設定項目
各項目の役割について。
missingok
ローテーションするログがなくてもエラーにしない。
monthly
月1回、ローテーションする。/var/lib/logrotate.status
で管理している日付を基準にする。
$ cat /var/lib/logrotate.status logrotate state -- version 2 ... "/path/to/log/foo.log" 2017-10-16 ...
rotate 36
過去ログをいくつ管理するか。
monthly
の36なので、3年分(12*3)。
compress
過去ログをgzipで圧縮する。
ifempty
ローテーションするログが空ファイルであっても、ローテーションする。
create 0664 bar bar
対象ログのモード、所有者、所有グループ。
dateext
過去ログのファイル名を日付ベースにする。このオプションをつけると、過去ログのファイル名は
/path/to/log/foo.log-20171016
このようになる。
上記の設定の場合、compress
があるので
/path/to/log/foo.log-20171016.gz
このようになる。