Linux Ubuntu

logrotate(ログローテート)の設定

バグや問い合わせなど何かあったときにとても大切なログですが、ただ延々とログを追記しているとログのせいでディスクを圧迫してエラーになってしまいます。
エラーに対応するためのログを出力してエラーになっては本末転倒なのでそうならないためにログローテートは必ず設定しましょう。
ここではオリジナルのログファイルに対して設定する場合を中心に進めますが設定方法自体は他でも変わりません。
ログローテートは基本的に一定期間や一定量毎にファイルをナンバリングして古くなったものを削除します。
簡単なのでlogrotateを利用します。logrotateは最近のlinuxなら標準でインストールされているはずです。
ubuntuで実行していますが、CentOSでも同じようです。

$ cd /etc/logrotate.d
$ ls

で、どんな設定ファイルがあるか確認しましょう。
既存のものにかぶらないように新規で設定を作成します。
作成したものがわかるよう、サービス名などを接頭辞につけるとよいです。ここではsvc_exampleという名前で設定ファイルを作成します。

$ sudo vi svc_example

中身は下記のようになります。
/var/example/log/hoge/は環境に合わせてログファイルを置くディレクトリを設定してください。
*.logとすることで指定ディレクトリにある".log"が末尾につくファイル全てを対象にしています。

/var/example/log/hoge/*.log {
    daily
    rotate 14
    missingok
}

dailyの部分は期間です。
daily (日毎)
weekly (週毎)
monthly (月毎)
のどれかを設定します。
rotateは世代数、ローテーションする数です。
.log -> .log.1 -> .log.2 ... というように実行のたびにファイル名の番号が変更されていき、指定数を超えるときに削除されます。
他、下記オプションを設定しています。
missingok : ログファイルがなくてもエラーを出さない(基本は設定しておくとよいです)
設定ができたら下記コマンドでテストしましょう。

$ sudo logrotate -dv /etc/logrotate.conf

問題がなければ下記コマンドで反映します。成功した場合は何も表示されません。

$ sudo /usr/sbin/logrotate /etc/logrotate.conf

ログローテートが実行されているか状況確認するのは下記で実行状況を確認します。

$ cat /var/lib/logrotate/status

以上になります。ログファイルは忘れずにローテートしましょう。

-Linux, Ubuntu