LoginSignup
4
5

More than 5 years have passed since last update.

logrotate で重複するパターンを指定したらだめ

Posted at

logrotate で次のように重複するパターンを指定し、

/etc/logrotate.d/ore.conf

/var/log/ore/zzz.log {
    weekly
    rotate 3
}
/var/log/ore/*.log {
    daily
    rotate 10
}

さらに次の通りにログがあるときに、

mkdir -p /var/log/ore
touch /var/log/ore/aaa.log
touch /var/log/ore/zzz.log

logrotate を実行すると、

logrotate --debug /etc/logrotate.conf

次のように表示されました。

rotating pattern: /var/log/ore/zzz.log  weekly (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/ore/zzz.log
  log does not need rotating

rotating pattern: /var/log/ore/*.log  after 1 days (10 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/ore/aaa.log
  log does not need rotating

logrotate の設定を次のように変更すると、

/var/log/ore/*.log {
    daily
    rotate 10
}
/var/log/ore/zzz.log {
    weekly
    rotate 3
}

次のように結果がかわりました。

rotating pattern: /var/log/ore/*.log  after 1 days (10 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/ore/aaa.log
  log does not need rotating
considering log /var/log/ore/zzz.log
  log does not need rotating

rotating pattern: /var/log/ore/zzz.log  weekly (3 rotations)
empty log files are rotated, old logs are removed
No logs found. Rotation not needed.

この動きから推測するに、

「重複するパターンがある場合は最初の検索で見つかったログはは以降の検索で見つかっても除外される」

ということだと考えました。


が、ぜんぜん違いました。

logrotate の設定を次のように変更して、

/var/log/ore/bbb.log {
    weekly
    rotate 3
}
/var/log/ore/*.log {
    daily
    rotate 10
}

そしてログファイルを次のように作成すると、

mkdir -p /var/log/ore
touch /var/log/ore/aaa.log
touch /var/log/ore/bbb.log
touch /var/log/ore/zzz.log

次の結果になりました。

rotating pattern: /var/log/ore/bbb.log  weekly (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/ore/bbb.log
  log does not need rotating

rotating pattern: /var/log/ore/*.log  after 1 days (10 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/ore/aaa.log
  log does not need rotating

zzz.log が無い?

よく見たら先頭の方でエラーが表示されていました。

error: ore.conf:5 duplicate log entry for /var/log/ore/bbb.log

つまりこれは下記の動きになっています。

  • /var/log/ore/bbb.log を検索
    • /var/log/ore/bbb.log を追加
  • /var/log/ore/*.log を検索
    • /var/log/ore/aaa.log を追加
    • /var/log/ore/bbb.log を追加
      • がしかし重複しているので無視して次のパターンに

そのため bbb.log よりも後に発見される zzz.log は抜けてしまいます。


結論、logrotate で重複するパターンは指定してはならない。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5