Это установка tomcat7 с конфигурацией ведения журнала по умолчанию, catalina.out развертывается только при перезапуске сервера. Поскольку это рабочий сервер, мы не можем часто перезапускать его. У нас есть огромное количество записей, поступающих в этот файл, из-за чего наш файл catalina.out очень сильно растет за несколько дней, пока не займет все дисковое пространство.
Поскольку мы не хотим менять конфигурацию ведения журнала, поскольку она кукольная, и нам нужно будет создавать билеты devops и все такое медленное, я написал сценарий bash, который запускается каждые 5 минут через crontab, который будет сокращать файл журнала на половине, когда предел достигнут, сценарий выглядит следующим образом:
if [ $catalinaSize -gt $catalinaThreshold ]; then
middle=$(wc -l $catalinaLoc | awk '{ print $1 }')
middle=$(( $middle / 2 ))
sed -i -e 1,${middle}d $catalinaLoc
echo "+++ catalina.out was cut by half"
По сути, этот сценарий проверяет текущий размер файла и сравнивает его с пороговым значением, а затем использует wc и awk для получения количества строк в этом файле, чтобы затем использовать sed для сокращения файла наполовину.
Я протестировал скрипт в других средах, и он работал. Проблема заключается в том, что после нескольких успешных запусков в течение нескольких дней в производственной среде catalina.out внезапно не получает никаких записей журнала от tomcat несколько дней назад.
Объяснение, о котором я думаю, заключается в том, что Tomcat больше не может записывать в этот файл из-за операции сокращения наполовину.
Можно ли узнать, что мешает Tomcat записывать в этот файл?