お品書き †定義の書き方 †/etc/logrotate.confか/etc/logrotate.d/__config_filename__に書く(OSによって異なる)。 statecheck.logというファイルを以下の条件でローテーションする設定例。/etc/logrotate.d/statecheckとして書く想定。
/some/where/statecheck.log {
weekly
rotate 5
create
postrotate
kill `cat /some/where/statecheck.pid` &> /dev/null
/some/where/statecheck_start.sh &> /dev/null
endscript
}
ローテーションのテスト †logrotateの-dオプションを利用する。 実行。 # logrotate -d /etc/logrotate.d/statecheck デバッグログの出力。 どのコンフィグファイルを読んだか、どのログを対象としたか、どのような条件でローテーションするか、実際にローテーションが必要かがずらずらっと出る。 reading config file /etc/logrotate.d/statecheck reading config info for /some/where/statecheck.log Handling 1 logs rotating pattern: /home/cms-admin/log/mysqlstatecheck.log weekly (5 rotations) empty log files are rotated, old logs are removed considering log /home/cms-admin/log/mysqlstatecheck.log log does not need rotating not running postrotate script, since no logs were rotated この例では「log does not need rotating」と出力されていて、これはログローテーションが不要なことを表している。ローテーション不要な理由は出力されていないが、過去にログローテーションした日付が近すぎて(weeklyなので1週間以内)ローテーションされていない。 ログローテーションした日付はlogrotate.statusファイルに記録される(後述)。 ログを入れ替えた日付 †logrotate.statusファイルに記録される。RedHat?/CentOSだと/var/lib/logrotate.statusファイルに、ファイル名、日付を空白で区切った形で記述される。 $ cat /var/lib/logrotate.status 〜 "/var/log/rpmpkgs" 2009-3-29 "/var/log/messages" 2009-3-29 "/var/log/secure" 2009-3-29 "/var/log/maillog" 2009-3-29 "/var/log/spooler" 2009-3-29 〜 |