Método 1: Utilização do cronolog para Divisão do Arquivo catalina.out
Instalação do cronolog a partir do código fonte.
wget http://example.com/cronolog-1.6.3.tar.gz
tar xzf cronolog-1.6.3.tar.gz
cd cronolog-1.6.3
./configure
make
make install
Verificação da instalação do cronolog.
which cronolog
# Saída esperada: /usr/local/sbin/cronolog
Modificação do script de inicialização do Tomcat (catalina.sh). Loaclizar as seções que redirecionam a saída padrão. Ajustar a seção de inicialização padrão para incorporar o cronolog.
# Comentar a linha de criação do log, se existir.
# touch "$CATALINA_OUT"
# Modificar o bloco else da inicialização
else
"$_RUNJAVA" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog /var/log/tomcat/catalina.%Y-%m-%d.log &
fi
Após reiniciar o Tomcat, arquivos de log diários como catalina.2023-12-15.log devem ser gerados no diretório configurado.
Método 2: Configuração do Log4j para Rotação de Logs
Criar o arquivo de configuração log4j.properties no diretório conf do Tomcat.
log4j.rootLogger=WARN, FILEROTATIVO
log4j.appender.FILEROTATIVO=org.apache.log4j.RollingFileAppender
log4j.appender.FILEROTATIVO.File=${catalina.base}/logs/app.log
log4j.appender.FILEROTATIVO.MaxFileSize=5MB
log4j.appender.FILEROTATIVO.MaxBackupIndex=15
log4j.appender.FILEROTATIVO.layout=org.apache.log4j.PatternLayout
log4j.appender.FILEROTATIVO.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c - %m%n
Disponibilizar as bibliotecas necessárias (log4j.jar e commons-logging.jar) no diretório lib do Tomcat. O servidor deve ser reiniciado para aplicar as alterações.
Método 3: Script Shell para Rotação Manual
Criar um script executável (rotate-logs.sh) no diretório bin do Tomcat para ser agendado via cron.
#!/bin/bash
TOMCAT_HOME="/opt/tomcat"
LOG_DIR="${TOMCAT_HOME}/logs"
BACKUP_SUFFIX=$(date +%F)
RETENTION_DAYS=7
# Rotaciona o log principal
mv "${LOG_DIR}/catalina.out" "${LOG_DIR}/catalina.out.${BACKUP_SUFFIX}"
touch "${LOG_DIR}/catalina.out"
# Limpa logs antigos
find "${LOG_DIR}" -name "catalina.out.*" -mtime +${RETENTION_DAYS} -exec rm -f {} \;
Este script renomeia o log corrente com a data atual, cria um novo arquivo vazio e remove backups com mais de 7 dias.