(log has been already rotated)でログローテートされない問題の解決
logrotateで任意のログをローテートする – DACELO SPACEの項目で説明したとおりに設定したところ、DryRunを実行するとこんなメッセージが。
[dacelo@space ~]$ sudo logrotate -dv /etc/logrotate.conf rotating pattern: /var/log/hogehoge/hogehoge.log weekly (12 rotations) empty log files are not rotated, old logs are removed considering log /var/log/hogehoge/hogehoge.log log does not need rotating (log has been already rotated)
log does not need rotating (log has been already rotated)
ログはローテートを必要としていません(ログはローテートされませんでした)
え、なんで!? と悩んで調べて解決。
Logrotateは、2回目の実行でのみログファイルのローテーションを開始するという仕様なのでした。そのファイルのエントリが/var/lib/logrotate/logrotate.statusにない場合、logrotateはファイルをローテーションしないようです。
なので解決策としては、「2回めの実行まで心を落ち着けて待つ」なのですが、せっかちで我慢できない場合は、次のようにして強制的に「2回めの状態」を作り出してローテートさせることが出来ます。
/var/lib/logrotate/logrotate.statusの末尾に以下の行を追加する
"/var/log/hogehoge/hogehoge.log" 2021-11-25-7:0:0
これでlogrotateは「あ、11月25日に実行しているな」と認識して、次のローテーションを始めます。
広告
なるほど2回目の実行でログファイルのローテーションが開始する仕様だったのか > logrotate。自分で設定作って dry-run では動きが見えないのに納得