Estou tentando fazer com que nosso servidor Tomcat 9 registre seu login interno /var/log
em vez de ${catalina.base}/logs
.
Tentei alterar os destinos em logging.properties, mas o diretório de logs ${catalina.base}
é na verdade um link simbólico, portanto, alterar o destino para /var/log
deve resolver. Nenhuma das duas ideias funcionou.
Além disso, estou me perguntando se isso poderia ser causado por catalina.policy
, mas isso significaria que o Tomcat seria lançado com a -secure
opção. Meu Tomcat é iniciado como serviço usando o systemd. Não tenho ideia de como posso verificar se -secure é usado ou não.
O Tomcat logging.properties
é realmente usado. Quando verifico o processo com ps
, recebo -Djava.util.logging.config.file=/opt/rh/jws5/root/usr/share/tomcat/conf/logging.properties
, que é o arquivo correto, aquele que tentei modificar.
Estou usando o Tomcat 9 com Java 8 no RHEL 8.
Editar : também tentei adicionar ReadWritePaths=/var/log/tomcat
ou ReadWritePaths=/var/log
no arquivo de serviço. Ainda não há mudança.
Edit2 : Alguns detalhes sobre a configuração atual. Meu CATALINA_BASE é /opt/rh/jws5/root/usr/share/tomcat. Ele contém o seguinte:
drwxr-xr-x 2 root root 134 Dec 7 16:18 bin
lrwxrwxrwx 1 root root 28 Nov 15 17:45 conf -> /etc/opt/rh/scls/jws5/tomcat
lrwxrwxrwx 1 root root 39 Nov 15 17:45 lib -> /opt/rh/jws5/root/usr/share/java/tomcat
lrwxrwxrwx 1 root root 15 Jan 31 17:42 logs -> /var/log/tomcat
lrwxrwxrwx 1 root root 39 Nov 15 17:45 temp -> /var/opt/rh/scls/jws5/cache/tomcat/temp
lrwxrwxrwx 1 root root 40 Nov 15 17:45 webapps -> /var/opt/rh/scls/jws5/lib/tomcat/webapps
lrwxrwxrwx 1 root root 39 Nov 15 17:45 work -> /var/opt/rh/scls/jws5/cache/tomcat/work
logs apontados anteriormente para /var/opt/rh/scls/jws5/log/tomcat. Com a configuração atual, o Tomcat não está mais efetuando login em /var/opt/rh/scls/jws5/log/tomcat. Mas também não efetua login em /var/log.
Aqui está o trecho do meu arquivo logging.properties com os vários caminhos:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8
Edit3 : Tentei substituir os ${catalina.base}/logs
do logging.properties
by /var/log/tomcat
, ainda sem sucesso.
O que finalmente resolveu o problema consiste em 2 pontos:
Meu processo Tomcat não pertence ao root, então o diretório /var/log/tomcat precisa de direitos de leitura/gravação para todos.
As seguintes linhas precisam ser adicionadas à
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
seção docatalina.policy
arquivo: