Неограниченное количество журналов с logrotate

Есть ли способ установить неограниченное количество потенциальных журналов в обычном файле конфигурации logrotate.d?

Единственное, что я могу придумать, это установить какое-то сумасшедшее число, которое никогда не будет достигнуто. Что-то типа:

/var/log/app/* {
  missingok
  weekly
  copytruncate
  rotate 10000000000
  compress
  notifempty
  olddir /var/log/app/old
}

Но мне это кажется довольно хакерским.


person stewbert    schedule 26.02.2013    source источник
comment
Интересный вопрос. Кажется, я припоминаю, что rotate 0 хранит только текущий журнал. Вы пробовали rotate -1 или полностью пропустили его?   -  person Anders R. Bystrup    schedule 26.02.2013
comment
Вы уже нашли решение, теперь давайте скрестим пальцы и предположим, что logrotate использует 64-битное целое число для хранения значения поворота.   -  person ypnos    schedule 26.02.2013
comment
@ypnos Тип данных для подсчета оборотов - int, который гарантированно будет не менее 16 бит. Это ограничивает вас до 2 ** 15-1 = 32767. На практике, однако, сегодня это обычно 32 бита, что дает 2**31-1=2147483647. В любом случае, даже с 16-битным int этого должно хватить на обозримое будущее: с одним журналом в день это почти 89 лет.   -  person tobbez    schedule 11.04.2018


Ответы (1)


Из справочной страницы UNIX logrotate:

поворот счетчика

Файлы журналов ротируются несколько раз перед удалением или отправкой по почте на адрес, указанный в почтовой директиве. Если count равен 0, старые версии удаляются, а не ротируются.

Поэтому я думаю, вам нужно написать огромное число, чтобы работать.

person fedorqui 'SO stop harming'    schedule 26.02.2013
comment
Извините, я должен был упомянуть, что сначала проверил справочную страницу. Там ничего не было сказано, но мне просто интересно, есть ли у кого-нибудь идея получше. Когда-нибудь это огромное количество можно будет встретить :) Я думаю, одной из идей может быть задание cron, которое перемещает журналы в папку / old / old, когда они достигают определенного количества ... - person stewbert; 26.02.2013
comment
OK! Поэтому я переработал справочную страницу :) Ну, я думаю, что это хорошая идея, конечно. Вы можете создать этот скрипт, проверяющий количество файлов в каталоге, что-то вроде if [ $(ls -1 /dir | wc -l) -ge $BIG_NUMBER ]; then bla bla bla. Я думаю, что нехорошо хранить миллиарды лог-файлов вместе. Если вам нужна информация, ее лучше хранить в разных местах, чтобы в случае чего с файловой системой можно было ее восстановить. Как насчет полных резервных копий время от времени, чтобы при необходимости можно было восстановить из резервной копии? - person fedorqui 'SO stop harming'; 26.02.2013
comment
Это возможный план, конечно. Это скорее маскировка реальной проблемы (приложение, которое генерирует журналы с угрожающей скоростью). Что касается фактического владельца приложения, я просто знаю, что они будут лучше спать по ночам, если будут неограниченные настройки, которые можно использовать до тех пор, пока не будет реализовано реальное решение (остановите приложение от создания такого количества проклятых журналов! Прямо сейчас оно будет чередовать журналы размером 20 МБ). каждые 10-15 минут...) Спасибо! Я дам вам ответ. - person stewbert; 26.02.2013
comment
Ух ты! Так что это определенно вопрос проверки приложения. Вы также должны увеличить size до чего-то довольно большого. Опять же, справочная страница не уточняет ограничение, но 20 МБ должно быть в порядке. Удачи, @stewbert! - person fedorqui 'SO stop harming'; 26.02.2013