logrotateの設定を、
- /etc/logrotate.conf
- /etc/logrotate.d/に置かれたファイル
にした後に、意図したとおりにログローテーションするかをテストします。
logrotateは、実際はcrondによって、定められたタイミングで実行されるわけですが、今すぐに実行できないといけませんし、crondの設定を変更したくありません。
また、実際にはローテーションされないようにする必要もあります。
こういうときには、次のようにlogrotateコマンドを実行します。logrotate.confを指定すればlogrotate設定全体のテスト、dovecotなどの個別設定を指定すれば個別設定のテストを実行できます。
[root ~]# logrotate -dv /etc/logrotate.conf [root ~]# logrotate -dv /etc/logrotate.d/dovecot
実行結果は、ローテーションする場合とローテーションしない場合の2通りを示しておきます。
なお、/etc/logrotate.d/dovecot の内容は次の通りです。
# dovecot SIGUSR1: Re-opens the log files.
/var/log/dovecot.log {
missingok
notifempty
size 50k
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}
サイズが設定値に達していないので、ローテーションしない場合
[root ~]# logrotate -dv /etc/logrotate.d/dovecot reading config file /etc/logrotate.d/dovecot reading config info for /var/log/dovecot.log Handling 1 logs rotating pattern: /var/log/dovecot.log 51200 bytes (no old logs will be kept) empty log files are not rotated, old logs are removed considering log /var/log/dovecot.log log does not need rotating not running postrotate script, since no logs were rotated
サイズが設定値に達して、ローテーションする場合
reading config file /etc/logrotate.d/dovecot reading config info for /var/log/dovecot.log Handling 1 logs rotating pattern: /var/log/dovecot.log 51200 bytes (no old logs will be kept) empty log files are not rotated, old logs are removed considering log /var/log/dovecot.log log needs rotating rotating log /var/log/dovecot.log, log->rotateCount is 0 renaming /var/log/dovecot.log.1 to /var/log/dovecot.log.2 (rotatecount 1, logstart 1, i 1), renaming /var/log/dovecot.log.0 to /var/log/dovecot.log.1 (rotatecount 1, logstart 1, i 0), renaming /var/log/dovecot.log to /var/log/dovecot.log.1 disposeName will be /var/log/dovecot.log.1 running postrotate script running script with arg /var/log/dovecot.log: " /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true " removing old log /var/log/dovecot.log.1