ログローテーションがうまくいかないとき

logarotateによるログローテーションがどうもうまくいかない、変なローテーションファイルが作成される、ログローテーションのテストでローテーション対象になるログができない、などちょっと困ってしまうことがあります。

ローテーションファイルのサフィックス(連番や日付)を途中で変更したときには、次のように変なローテーションファイルができてしまうことがあります。

-rw-r–r– 1 root root 1366515 7月 13 17:15 2014 access_log -rw-r–r– 1 root root 0 7月 13 03:16 2014 access_log.1 -rw-r–r– 1 root root 17375755 7月 13 03:15 2014 access_log.1.1 -rw-r–r– 1 root root 0 7月 13 03:16 2014 access_log.2 -rw-r–r– 1 root root 5301528 7月 6 03:15 2014 access_log.2.1 -rw-r–r– 1 root 続きを読む »

logrotateのテスト方法

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 続きを読む »

logrotateの設定パラメータ

logrotateのファイル毎のローテーション方式は、

/etc/logrotate.conf /etc/logrotate.d/に置かれたファイル

に設定されますが、そこで使用するパラメータを整理しておきます。

パラメータ 機能の説明 missingok 指定のログファイルが存在しない場合でもエラーにしないで、次のログファイルの処理へ移る。 dailyweeklymonthlyyearly それぞれ、日次、週次、月次、年次でローテーションを行う。 notifempty 指定のログファイルが空の場合にはローテーションを行わない。 size サイズ(K/M) 指定したログファイルが指定したサイズより大きい場合にローテーションを行う。 compress ローテーションしたログファイルをgzipで圧縮する。 rotate ローテーションしたファイルを保持する世代数。 create [パーミッション] [ユーザ] [グループ] ローテーションの後に、新規のログファイルを作成する。 dateext ローテーションしたファイルの末尾に日付を付ける。 prerotate~スクリプト~endscript ローテーション条件に合致したログファイルがあった場合に、ログファイル毎に、ローテーションの前に実行するスクリプト。 postrotate~スクリプト~endscript ローテーション条件に合致したログファイルがあった場合に、ログファイル毎に、ローテーションの後に実行するスクリプト。 sharedscripts ローテーション条件に合致したログファイルがあった場合に実行するprerotate、postrotateで指定するスクリプトを、1回だけ実行するようにする。

続きを読む »

Dovecotのログをローテーションする

Dovecotの設定の中に次のようなログファイルの設定があります。ファイル名をdovecot.logとした場合の例です。

log_path = /var/log/dovecot.log

このログは、Dovecotをインストール・設定しただけではローテーションされません。 そこで、次のように/etc/logrotate.d/dovecotを作成して、ローテーションが行われるように設定するといいでしょう。

[root ~]# vim /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 }

なお、この設定はDovecotのWiki『Logging – Dovecot Wiki』を参考にしています。