У меня есть сервер Tomcat, который создает журналы доступа через клапан ( org.apache.catalina.valves.FastCommonAccessLogValve ). Этот клапан заботится о вращении файла журнала доступа, но не о сжатии или удалении их через некоторое время.
На данный момент у меня есть задание cron, которое использует find [...] -mtime +30 [...]
для сжатия и удаления журналов. Я бы предпочел использовать logrotate, чтобы ротация журналов была централизованной для всех журналов. Мне не нравится иметь отдельное решение только для Tomcat.
Я пытался прочитать документацию logrotate, но я все еще немного потерян. Могу ли я использовать logrotate только для сжатия и очистки файлов журнала? Как бы я это сделал?
Или, решая проблему, существует ли клапан доступа Tomcat, который сжимает и очищает файлы журнала?
Спасибо за помощь !
Ответы:
Довольно простой, который я видел, работает следующим образом.
Создайте файл в /etc/logrotate.d с именем tomcat, содержащий следующее: -
Он запускается ежедневно , сжимает файл и сохраняет стоимость 7 дней ( поворот 7 ). copytruncate означает, что он будет копировать, а затем обрезать исходный файл, так что нет необходимости перезапускать tomcat. Отсутствие хорошо не будет ошибкой, если его там нет.
Клапан access.log можно изменить, чтобы он не вращался, добавив rotatable = false: -
источник
Модифицированный скрипт TimP - добавлено удаление очень старых файлов, добавлено сканирование старых сжатых файлов.
источник
Я не хотел менять конфигурацию Tomcat, поэтому создал скрипт, который сжимал повернутые файлы
источник
Это на удивление просто. Просто скажите logrotate, какие файлы вы хотите вращать.
nocreate
говорит logrotate не пересоздавать пустой файл после перемещения старого (если вы переворачиваете файлы в подпапку).источник
Для сжатия local_access_log.YYYY-MM-DD.txt я написал этот скрипт, увидев этот пост: -
источник
Простое решение, представленное здесь. Это также включает опцию загрузки s3.
https://yottabrain.org/tomcat/tomcat-log-backup/
источник