У нас есть следующие файлы журнала, файл журнала заканчивается наdate
catalina.out.2014-02-01
catalina.out.2014-02-02
catalina.out.2014-02-03
catalina.out.2014-02-04
catalina.out.2014-02-05
catalina.out.2014-02-06
...
...
Моя конфигурация logrorate
/opt/tomcat7.0/logs/catalina.* {
rotate 5
missingok
notifempty
size 5M
compress
copytruncate
}
Его усечение снова и снова, см. ниже (пример)
catalina.out.2014-04-17-20140419.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz-20140421.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz-20140421.gz-20140422.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz-20140421.gz-20140422.gz-20140423.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz-20140421.gz-20140422.gz-20140423.gz-20140424.gz
catalina.out.2014-04-17-20140419.gz-20140420.gz-20140421.gz-20140422.gz-20140423.gz-20140424.gz-20140425.gz
решение1
Для того, что вы настроили, logrotate
делает то, что вы просили. Попробуйте заменить .*
на .out
:
/opt/tomcat7.0/logs/catalina.out {
rotate 5
missingok
notifempty
size 5M
compress
copytruncate
}
В противном случае старые ротации всегда будут перехвачены, потому что именно их вы настроили.
решение2
Я также предлагаю изменить очевидное .*
, это работает как обычная подстановка оболочки, так что вы можете использовать ?
и *
несколько раз. Вот так:
/opt/tomcat7.0/logs/catalina.*.????-??-?? {
rotate 5
missingok
notifempty
size 5M
compress
copytruncate
}
который будет соответствоватьcatalina.out.2014-02-06и не будет соответствоватьcatalina.out.2014-04-17-20140419.gz
также хороший совет отсюдаhttps://superuser.com/a/255970/312809, как проверить конфигурацию logrotate:
logrotate -d -f /etc/logrotate.conf
-d = Включает режим отладки. В режиме отладки не будут внесены изменения в журналы или в файл состояния logrotate.
-f = Сообщает logrotate о необходимости принудительного вращения, даже если он не считает это необходимым.