WEB サーバーやメールサーバーなどのログは放っておくとファイルサイズがどんどん大きくなっていきます。 logrotate を使って一定の期間やサイズごとにファイルを分けるとログを扱いやすくなります。 その設定方法を説明します。
詳しい情報は man logrotate
で確認するか、または次のリンク先をご覧ください。
logrotate(8) - Linux man page
設定ファイルの概要
logrotate の大本の設定ファイルは /etc/logrotate.conf です。 このファイルから、/etc/logrotate.d/ ディレクトリ以下にあるアプリケーションごとの設定ファイルが読み込まれるようになっています。
/etc/logrotate.conf ではデフォルト値の設定などを行い、/etc/logrotate.d/ 以下のファイルでローテーション対象のファイルなどを設定します。
設定の例
/etc/logrotate.d/httpd
/var/log/httpd/access_log /var/log/httpd/error_log {
daily
size 0
notifempty
rotate 90
missingok
compress
delaycompress
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
endscript
}
設定の意味
/var/log/httpd/access_log と /var/log/httpd/error_log に対するローテーションの設定を行っています。 対象のファイルは、ワイルドカードを使って /var/log/httpd/*log と指定することもできます。 この設定では、ログのサイズが 0 でない限り毎日ローテーションし、前日のログを gzip 圧縮します。 90日分のログを保存し、それより古くなったファイルは削除されます。 最後に Apache に設定を再読み込みするよう指令を出しています。(ログ出力先をリセットするため)
各設定項目の詳細については、logrotate(8) - Linux man page や @IT:logrotateの設定ファイルで指定できる主なコマンド をご覧ください。
logrotate のテスト
次の様にオプションを指定して実行することで、設定の妥当性や logrotate の動きを確認できます。
$ logrotate -dv /etc/logrotate.d/httpd
-d オプションを指定すると、実際のローテーションや logrotate.status への履歴の記録は行われません。
※期待に反し log does not need rotating
などと表示されてローテーションされない場合は以下のリンク先を参考に対処してください。
logrotateでログファイルがローテーションされない事への対処|A Day In The Boy's Life
logrotate の実行
さくらの VPS では、最初から logrotate が毎日実行されるようになっています。
$ logrotate /etc/logrotate.conf
logrotate のログ
logrotate の実行履歴は、デフォルトでは /var/lib/logrotate.status で管理されています。
ピンバック: Railsアプリのログをローテーションした話 | blog.PanicBlanket.com
ピンバック: Railsアプリのログをローテーションした話 | blog.PanicBlanket.com