Всё бы хорошо, но tomcat не понимает сигналs HUP, SIGUSR1 (при их получении он просто завершается). Как быть, если надо ротировать логи. Есть 2 варианта: через системный log-ротатор и через встроенные механизмы самого tomcat’a. Я рассмотрю первый вариант, так как в нём больше возможностей в плане ротации файлов. Но тут есть нюанс: ротировать будем с помощью метода copytruncate, то есть нужный нам лог сначала копируется, а потом урезается до нулевой длинны, тем самым не нарушая последующей записи в исходный лог.
Linux
Ниже показан пример для logrotate (ключевой параметр здесь copytruncate):
/var/tomcat/logs/catalina.out {
notifempty
copytruncate
dateext
daily
rotate 10
compress
missingok
}
Solaris
Ниже показан пример для logadm (ключевой параметр ‘-c’):
# logadm -w /var/tomcat6/logs/catalina.out -C 5 -c -s 100m -z 0
FreeBSD/OpenBSD
К сожалению, newsyslog в этих ОСях не поддерживает copytruncate. Но можно использовать из портов logrotate.