Я установил logrotate файл конфигурации как это:
/var/log/tomcat/catalina.out{
copytruncate
daily
dateext
rotate 10
missingok
notifempty
}
И в моем/sysconfig/cron файле настроек я установил DAILY_TIME="00:00"
Это поворачивает журналы, но если журнал имеет дату catalina.out-20150415
это содержит информацию о журнале с даты 20150414, это за один день до этого.
Я должен изменить дату в/sysconfig/cron файле, или возможно я мог achive это с prerotate/endscript опцией?
Насколько я знаю работы DAILY_TIME в 15-минутных разрывах, и я хотел бы иметь максимально perfet, ежедневно регистрируется, которые содержат просто информацию одного дня. Что то, что я получаю теперь, но дата от имени файлов не придерживается содержания в них.
Примечание: Я нахожусь под SLES, где ежедневная работа заданий крона, немного отличающаяся от других дистрибутивов.
Я бы не стал играть с / sysconfig / cron, кроме как установить ежедневные задания cron в полночь, и предпочел бы вместо этого postrotate.
Предположим, что сегодня 17.04.2015, это содержимое вашего каталога после ротации, но до запуска скрипта postrotate:
catalina.out-20150414
catalina.out-20150415
catalina.out-20150417
catalina.out
Обратите внимание, что catalina.out-20150416
отсутствует, поскольку 1) последний файл журнала, созданный ротацией, называется catalina .out-20150417
и 2) журнал, который был создан вчера, был переименован в catalina.out-20150415
, чтобы отразить его содержимое.
Этот сценарий позволяет нам выполнить «слепое переименование». журнала сегодня с датой вчерашнего дня, например:
...
postrotate
mv "catalina.out-$(date +"%Y%m%d")" "catalina.out-$(date --date="yesterday" +"%Y%m%d")" > /dev/null 2>&1 || true
endscript
...
В случае отсутствия файлов журнала mv
выдаст сообщение об ошибке, которое перенаправляется на / dev / null
и даст положительный результат значение обеспечивается || true