(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日に実行しているな」と認識して、次のローテーションを始めます。

広告

About: dacelo


2,365 thoughts on “(log has been already rotated)でログローテートされない問題の解決”

  1. なるほど2回目の実行でログファイルのローテーションが開始する仕様だったのか > logrotate。自分で設定作って dry-run では動きが見えないのに納得

Comments are closed.