logが崩壊して、GB単位のファイルがあちこちに発生していた。
小蝿じゃないんだから、発生しなくていいわ。
さて、どうするかというとlogrotateの再確認であった。
それ以外、仕様がないものね。
先ずはetc/logrotate.confを確認する。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# see "man logrotate" for details # Rotate log files weekly. #weekly # 前回のローテーションから「5日」経っていたら回す呪文 #(これを入れると、毎日チェックして5日目に実行してくれます) maxage 5 # Keep 4 weeks worth of backlogs. rotate 4 # Create new (empty) log files after rotating old ones. create # Use date as a suffix of the rotated file. dateext # Compress log files. compress # ログが1ファイルでもこのサイズを超えたら、週を待たずに強制的に回す(超重要) maxsize 50M |
ここで、変更箇所はweeklyを外すこと。(macの再起動タイミングと会ってしまうので)
maxage 5
これを共通化する。(他には書かない)
5日以上経ったらrotateする。これで1週間に一度、且つサーバーの再起動とかち合わなくなる。
maxsize 50M
日付だけで無く、ファイルサイズに上限を設けることで、タイミングが合わなかろうがrotateして貰う。
logrotate.d/の中のファイルは、基本的に再読み込みのコマンド(kill -HUP)のみになる。
例えば、apache2の場合、これだけ。
|
1 2 3 4 5 6 |
/opt/local/var/log/apache2/*log { sharedscripts postrotate /bin/kill -HUP `cat /opt/local/var/run/apache2/httpd.pid 2>/dev/null` 2> /dev/null || true endscript } |
基本はこれで、dovecotとamavis-newは再読み込みの方法を提供されている。
|
1 2 3 4 5 6 |
/opt/local/var/log/dovecot/*log { sharedscripts postrotate /opt/local/bin/doveadm log reopen endscript } |
dovecotのコントローラーと言えるdoveadminにログの再読み込みを指令させる。
この方がスッキリするね。
dovecot reopenとか、もっと簡単そうだけれど……好みの問題だな、うん。
|
1 2 3 4 5 6 |
/opt/local/var/log/amavisd.log { sharedscripts postrotate /opt/local/sbin/amavisd reload >/dev/null 2>&1 || true endscript } |
amavisの方がスッキリくるかなと思ったが、こちらはこちらで「標準出力、エラー出力共に/dev/nullに突っ込め」と少々強引かな。
これを
logrotate -v etc/logrotate.conf
することで動作チェックも行った。
エラーは出なくなった(一時期自前のphp読み込ませたらダメだった)ので、出力結果を眺めてみた。
|
1 2 3 4 5 6 7 8 9 |
rotating pattern: /opt/local/var/log/dovecot/*log forced from command line empty log files are not rotated, log files >= 52428800 are rotated earlier, (4 rotations), old logs are removed after 5 days considering log /opt/local/var/log/dovecot/error.log Now: 2026-05-26 14:56 Last rotated at 2026-05-26 14:56 log needs rotating rotating log /opt/local/var/log/dovecot/error.log, log->rotateCount is 4 dateext suffix '-20260526' glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' error: destination /opt/local/var/log/dovecot/error.log-20260526.gz already exists, skipping rotation |
いろいろ頑張っていることが判るね。
立派だね、logrotate。
そのまま翻訳すると「丸太転がし」なんて可愛い名前になっちゃうとは思えないね。

