我正在尝试让我们的 Tomcat 9 服务器记录其内部登录/var/log
而不是${catalina.base}/logs
。
我尝试更改logging.properties中的目标,但中的日志目录${catalina.base}
实际上是一个符号链接,因此将目标更改为/var/log
应该可以解决问题。 这两个想法都没有奏效。
另外,我想知道这是否是由 引起的catalina.policy
,但这意味着 Tomcat 使用该-secure
选项启动。我的 Tomcat 使用 systemd 作为服务启动。我不知道如何检查是否使用了 -secure。
Tomcatlogging.properties
实际上是在用。当我使用 检查进程时ps
,我得到了-Djava.util.logging.config.file=/opt/rh/jws5/root/usr/share/tomcat/conf/logging.properties
,这是正确的文件,也就是我试图修改的文件。
我在 RHEL 8 上使用带有 Java 8 的 Tomcat 9。
编辑:我也尝试在服务文件中添加ReadWritePaths=/var/log/tomcat
或。仍然没有变化。ReadWritePaths=/var/log
編輯2:当前配置的一些详细信息。我的 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
编辑3:我尝试用 替换${catalina.base}/logs
其中的logging.properties
内容/var/log/tomcat
,但仍然无济于事。
答案1
最终解决问题的办法有两点:
我的 Tomcat 进程不属于 root,因此 /var/log/tomcat 目录需要每个人都具有读/写权限。
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
需要在该文件的部分添加以下几行catalina.policy
:permission java.io.FilePermission "/var/log/tomcat", "read, write"; permission java.io.FilePermission "/var/log/tomcat/*", "read, write, delete";