Logrotateは古いログを削除しません


14

何らかの理由で、古いログファイルは削除されません。Apacheの例

confファイルの内容:

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

ログフォルダーの(トリミングされた)コンテンツ:

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

実際にはたくさんあります:

# ls /var/log/apache2/ | wc -l
85

--verboseを指定したlogrotateコマンドを使用すると、次のことがわかります。

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

ここで何が間違っていますか?ログはローテーションされますが、削除されませんか?私は何が欠けていますか?

回答:


17

あなたの構成は言う:2を回転させる

つまり、ログファイルは削除される前に2回ローテーションされるため、logrotateは2つのファイルのみを考慮します。

私の推測では、以前より多くのログファイルが保持されていたため、ある時点で構成が変更されたと考えられます。


私は答えを証明できないので、正しいと思います。しかし、access.log.3.gzまだ存在する理由がわかりません。
SamK

2
rotate 2は2つのファイル、つまり.1.gzと.2.gzのみを処理し、他のファイルを無視するためです。
johnshen64

1
Rotate 365を90をRotateに変更しました。access.log.90.gzはこれまでに変更された最新のものです。(logrotateのはわずか90を保持して)access.log.91.gzは削除されましたが、johnshen64が正しいとそうではない> 91は、何も> 2.削除する必要があります
イヴァン・

:ここでは、多くのサーバーで、この自動的に、すなわち経由コンフィグ管理に対処する方法のヒントだserverfault.com/a/636883/9082
マルタインHeemels

-3

サフィックス.gzのログは、/ var / log / apache2 / *。logを指定したため考慮されません。

したがって、2つの.logファイルとすべての.gzファイルが残ります。

これを変更するには

/ var / log / apache2 / ** log *または何らかの正規表現。


ログの前にアスタリスクが1つだけ申し訳ありません
Neg88

2
アスタリスクの問題については、投稿を編集できます。より一般的には、なぜ受け入れられた答えが間違っていると思いますか?logrotateはベース名ファイルを必要とし、必要に応じて.gzの追加を処理します。
法律

少なくとも一部のlogrotateバージョンでは、ファイルが何度もローテーションされる可能性があるため、この回答は実際には有害です。最初にファイルを圧縮してから、圧縮されたファイルと一致させ、それらを回転させ続けます。
Richlv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.