Linux全般

logrotate、ログローテーションのまとめ [#yd03e7ff]

ログをローテーションさせるにはlogrotateが必要です。

以下に詳細を記載します。

各種ファイル場所 [#f8d8e25f]

設定メインファイル:基本このファイルを参照する。

 # /etc/logrotate.conf

Includeされる設定ファイル

 # /etc/logrotate.d/配下にあるファイル
 logrotate.confにIncludeするデフォルトのディレクトリが記述されており、上記ディレクトリ配下のファイルは全て読み込まれる。
 なお、Includeファイルの記述が優先的になるが、Includeファイルに記述されていない内容はlogrotate.confの内容が参照される。

設定確認コマンド [#sf3206c8]

 # logrotate -dv 設定ファイル

強制的にローテーション実行 [#gaf008ca]

 # logrotate -f ファイル

各種オプションまとめ [#ie4944fb]

 rotate 数字 <--数字の分世代保存する。
 例:rotate 15 <--15世代分保存する。
 daily  <--毎日
 weekly <--毎週ログローテートを実施する
 yealy  <--毎年
 compress <--圧縮する
 delaycompress <--今の世代と一つ前の世代は圧縮せず、その前までを圧縮する
 dateext <--保存したファイル名にyyyymmddを付加する
 nodateext <--日付で保存せずに末尾に数字の連番を付加して保存する。
 ifempty <--ログファイルが空でも処理する
 notifempty <--ログファイルが空の場合は処理しない
 missingok ←指定されたログファイルが無くてもエラーを出さず処理続行
 sharedscripts ←複数のログファイルを指定している際は必要、これがないと複数ログファイルがローテーションされる際にpostrotate  
endscriptが実行されてしまう

トラブルシュート [#h745c578]

エラー logrotate: ALERT exited abnormally with [1] [#a8626b59]

上記エラーがmessagesに記述されていると、ログがローテーションされていません。

一度 logrotate -dv /etc/logrotate.conf を実行して、設定ファイルを確認した方が良いです。

ローテーション対象のディレクトリが無い場合など、そのせいで全てのログがローテーションされないことになります。