我试图让我们的 Tomcat 9 服务器记录其内部日志/var/log
而不是${catalina.base}/logs
.
我尝试更改logging.properties中的目的地,但logs目录${catalina.base}
实际上是一个符号链接,因此将目的地更改为/var/log
应该可以解决问题。这两种想法都不起作用。
另外,我想知道它是否可能是由 引起的catalina.policy
,但这意味着 Tomcat 会使用该-secure
选项启动。我的 Tomcat 使用 systemd 作为服务启动。我不知道如何检查是否使用了 -secure 。
实际上使用的是Tomcat logging.properties
。当我使用 检查进程时ps
,我得到-Djava.util.logging.config.file=/opt/rh/jws5/root/usr/share/tomcat/conf/logging.properties
,这是正确的文件,我尝试修改的文件。
我在 RHEL 8 上使用 Tomcat 9 和 Java 8。
编辑:我还尝试在服务文件中添加ReadWritePaths=/var/log/tomcat
或。ReadWritePaths=/var/log
还是没有变化。
Edit2:有关当前配置的一些详细信息。我的CATALINA_BASE是/opt/rh/jws5/root/usr/share/tomcat。它包含以下内容:
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
日志先前指向 /var/opt/rh/scls/jws5/log/tomcat。使用当前配置,Tomcat 不再登录 /var/opt/rh/scls/jws5/log/tomcat 。但它也不登录/var/log。
这是我的logging.properties 文件的片段,其中包含各种路径:
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:我尝试替换by${catalina.base}/logs
中的那些,仍然无济于事。logging.properties
/var/log/tomcat
最终解决的问题有2点:
我的Tomcat进程不属于root,因此/var/log/tomcat目录需要每个人都有读/写权限。
需要将以下行添加到
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
该文件的部分catalina.policy
: