Логротат не видаляє старі журнали


14

чомусь старі файли журналів не видаляються. Приклад з апачем

Що говорить файл конф:

$ 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

Команда logrotate з --verbose дає мені це:

# /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 рази перед тим, як їх видалити, тому логротета стосується лише 2 файлів.

я гадаю, що конфігурацію було змінено в якийсь момент, тому що раніше зберігалося більше файлів журналів, можливо, це було щось на зразок повороту 28. ці старіші файли потрібно видалити вручну.


Я не можу довести відповідь, тому я гадаю, що це правильно. Однак я не розумію, чому access.log.3.gzвсе ще присутній.
СамК

2
Оскільки поворот 2 обробляє лише 2 файли, тобто .1.gz та .2.gz, а інші файли ігнорує.
johnshen64

1
Я змінив поворот 365 на обертання на 90, а access.log.90.gz - це остання зміна до цих пір. Access.log.91.gz було видалено (оскільки логротат зберігає лише 90), але не більше> 91. Отже, johnshen64 має рацію, вам потрібно нічого видалити> 2.
Іван,

Ось порада, як з цим вирішуватись автоматично, тобто через керування конфігурацією на багатьох серверах: serverfault.com/a/636883/9082
Martijn Heemels,

-3

Журнали із суфіксом .gz не враховуються, оскільки ви вказали: /var/log/apache2/*.log

Так залишаються 2 .log та всі .gz файли.

Щоб змінити це, покладіть туди

/ var / log / apache2 / ** log * або якийсь регулярний вираз.


Вибачте лише одну зірочку перед
входом

2
Для проблеми зірочкою ви можете редагувати свою публікацію. Загалом, чому ви вважаєте, що прийнята відповідь є неправильною? logrotate бажає файлів базового імені та при необхідності розглядає доповнення .gz.
Закон29

Ця відповідь насправді шкідлива, оскільки є ризик, що це може призвести до того, що файли будуть повертатися знову і знову, принаймні, з деякими логротатними версіями. Спочатку файли будуть стискати файли, потім відповідати стислим файлам і продовжувати їх обертати.
Richlv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.