【logrotate】ログファイルを自動で数日分バックアップ後破棄

ども。
自動でスクリプトを動かしているとちゃんと実行できたかログをとりたくなります。
けど、ログファイルってずっと放置していると膨大なファイルサイズになってしまうことも多々あるんですよ。
そのためにスクリプトを書いて一定期間で破棄したりするんですが、logrotateっていう簡単ログファイル保管ツールがあったのでメモ代わりに。

ログローテーションってやつらしいです。
CentOS6で確認しました。

参考:linux環境におけるのログファイルの保管設定(logrotate)

  • ログファイルを数日間保管して削除したい。
  • 数ヶ月保管して削除したい。
  • ファイルサイズは大きくないほうが良いので、できれば毎日分けたい。
  • このディレクトリの.logファイルは補完したいけど.etcはそのままにしたい。

などのちょっとわがままなことにも対応できちゃいます。

Root権限必要だと思います。sudoやsuコマンドを適宜使用してください。
設定ファイルは/etc/logrotate.dのなかに入っています。移動して表示してみましょう。

cd /etc/logrotate.d
ls

httpdやmysqld、syslogなどがこの仕組みを利用していることがわかると思います。
このディレクトリにファイルを作成することで設定ができます。
ためしにmylogという設定ファイルを作ります。

vi mylog

viは「i」で編集モードへ切り替え、「esc」で編集モードを抜けます。
viの使い方

/home/user/www/hogehoge.com/log/にある.logファイルを全て1日ごとに7日間保管したい場合には、記述内容は下記の通りになります。

/home/user/www/hogehoge.com/log/*.log {
	daily
	rotate 7
	missingok
}

「/home/user/www/hogehoge.com/log/*.log」の部分は/home/user/www/hogehoge.com/log/にある.logファイルの指定です。ワイルドカードが使えます。この場合hogehoge.logでもmogemoge.logでもヒットしますがhogehoge.htmlなどはヒットしません。
「daily」は毎日保存していきます。dailyの代わりにweekly(毎週)やmonthly(毎月)が設定可能です。
「rotate 7」の部分は7回繰り返しの指定です。hogehoge.log.2、hogehoge.log.3のように毎回ファイル名が変わっていき指定回数を超えると破棄されます。
「rotate 0」に指定するとrotateされたあとに古いものは削除されます。(※既存のファイルは自動削除されない点に注意)
「missingok」を指定しておけばファイルが見つからなかった場合にもエラーが出ません。

設定完了後は反映させましょう。下記コマンドで設定完了です。(何もメッセージは表示されません。)

/usr/sbin/logrotate /etc/logrotate.conf

実行状況を確認したければ

cat /var/lib/logrotate.status

こんな感じで簡単に毎日ログファイルがとれちゃうね。
エラーがないのがいいんだけど、万が一に備えて見やすいようにしておくのは大切だと思います!
ではまた。

  1. コメント 0

  1. トラックバック 0

return top