Настройка ротации логов `catalina.out` в Tomcat 10
По умолчанию Tomcat 10 не предусматривает встроенную ротацию логов catalina.out. Поскольку этот файл может неограниченно расти в размере, настройка его ротации является критически важной задачей для обеспечения стабильности системы. Ниже рассмотрены наиболее эффективные способы решения данной проблемы.
1. Использование внешнего инструмента (рекомендуется)
Наиболее надежным решением для Linux-систем является использование стандартного инструмента logrotate.
Шаги по настройке logrotate:
Создайте конфигурационный файл для logrotate:
Создайте файл/etc/logrotate.d/tomcatсо следующим содержимым:/путь/к/tomcat/logs/catalina.out { daily rotate 7 compress copytruncate missingok notifempty }Описание параметров:
daily: ротация выполняется ежедневно.rotate 7: хранить архивы за последние 7 дней.compress: сжимать старые лог-файлы для экономии места.copytruncate: копирует содержимое файла и обнуляет оригинал. Это позволяет Tomcat продолжать запись в тот же файл без необходимости перезапуска сервиса.missingok: не генерировать ошибку, если файл отсутствует.notifempty: не проводить ротацию, если файл пуст.
Проверьте работоспособность: Вы можете запустить logrotate вручную в режиме тестирования, чтобы убедиться в корректности настроек:
sudo logrotate -d /etc/logrotate.d/tomcat
2. Альтернативный метод: использование cronlog
Если logrotate по каким-то причинам недоступен, можно воспользоваться утилитой cronlog, которая перенаправляет вывод stdout/stderr в отдельные файлы с поддержкой ротации. Однако данный метод требует изменения скрипта запуска Tomcat.
3. Использование встроенных средств логирования (Log4j/logback)
Для полного отказа от catalina.out рекомендуется перенастроить приложение на использование современных библиотек логирования, таких как Log4j2 или Logback, которые поддерживают ротацию «из коробки» и позволяют гибко управлять уровнями логирования.
Резюме
Для большинства инсталляций logrotate с опцией copytruncate является золотым стандартом, так как не требует остановки сервера и легко интегрируется в системное администрирование Linux.