logrotate

主な記述例 [#r8a02941]

-毎日ローテーションする -31日分(31世代まで)を残す -ローテーションしたファイルは圧縮する -ログファイルが存在しなくてもエラーを出力しない -対象ログファイル「/var/log/myscripts/*.log」

 # vi /etc/logrotate.d/myscripts
 /var/log/myscripts/*.log {
     daily
     rotate 31
     compress
     missingok
 }

主なコマンド [#hd3d6b89]

|コマンド|内容| |compress|ローテーションしたログをgzipで圧縮| |copytruncate|ログファイルをコピーし、内容を削除| |create パーミッション ユーザー名 グループ名|ローテーション後に空のログファイルを新規作成。ファイルのパーミッション、ユーザー名、グループ名を指定可能| |daily|ログを毎日ローテーションする| |delaycompress|ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定| |ifempty|ログファイルが空でもローテーションする| |missingok|ログファイルが存在しなくてもエラーを出さずに処理を続行| |monthly|ログを毎月ローテーションする| |nocompress|ローテーションしたログを圧縮しない| |nocreate|新たな空のログファイルを作成しない| |nomissingok|ログファイルが存在しない場合にエラーを出す| |noolddir|ローテーション対象のログと同じディレクトリにローテーションしたログを格納| |notifempty|ログファイルが空ならローテーションしない| |olddir ディレクトリ名|指定したディレクトリ内にローテーションしたログを格納| |postrotate~endscript|postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行| |prerotate~endscript|postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行| |rotate 回数|ローテーションする回数を指定| |size ファイルサイズ|ログファイルが指定したファイルサイズ以上になったらローテーションする| |sharedscripts|複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行| |weekly|ログを毎週ローテーションする|

設定例 [#gacace01]

 /var/log/httpd/*_log {
     daily
     rotate 90
     compress
     delaycompress
     missingok
     notifempty
     sharedscripts
     postrotate
         /sbin/service httpd reload > /dev/null 2>/dev/null || true
     endscript
 }