Métodos de Rotação de Logs no Servidor Apache Tomcat

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.

Tags: Apache Tomcat cronolog Log4j rotação de logs Shell Script

Publicado em 7-14 19:35