在 Ubuntu 18.04 上移动 Tomcat 9 的日志位置

在 Ubuntu 18.04 上移动 Tomcat 9 的日志位置

在 AWS 中 Ubuntu 18.04 的一个新实例上,我通过 apt 安装了 tomcat9。我正在替换运行 tomcat7 的 14.04 Ubuntu 安装。由于我的应用程序的性质,我在 /data/ebs1 下安装了一个非常大的磁盘。在这个磁盘上,我设置了一个文件夹来存放一组非常大的 tomcat 日志。

/data/ebs1/tomcat-logs

将日志记录移到这里让我头疼。看来 tomcat9 已设置为记录到 syslog。所以请耐心等待,我将尝试深入研究这里的配置问题。

这是我的/etc/systemd/system/tomcat9.service

#
# Systemd unit file for Apache Tomcat
#

[Unit]
Description=Apache Tomcat 9 Web Application Server
Documentation=https://tomcat.apache.org/tomcat-9.0-doc/index.html
After=network.target

[Service]

# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat9"
Environment="CATALINA_BASE=/var/lib/tomcat9"
Environment="CATALINA_TMPDIR=/tmp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
EnvironmentFile=-/etc/default/tomcat9

# Lifecycle
Type=simple
ExecStartPre=+/usr/libexec/tomcat9/tomcat-update-policy.sh
ExecStart=/bin/sh /usr/libexec/tomcat9/tomcat-start.sh
SuccessExitStatus=143
Restart=on-abort

# Logging
SyslogIdentifier=tomcat9

# Security
User=tomcat
Group=tomcat
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
LogsDirectory=tomcat9
LogsDirectoryMode=750
CacheDirectory=tomcat9
CacheDirectoryMode=750
ProtectSystem=strict
ReadWritePaths=/etc/tomcat9/Catalina/
ReadWritePaths=/var/lib/tomcat9/webapps/
ReadWritePaths=/data/ebs1/

[Install]
WantedBy=multi-user.target

我在这里唯一更改的是将其添加data/ebs1/到 ReadWritePaths 列表中。此文件概述了 SyslogIdentifier tomcat9

并且为 tomcat9 设置了一个自定义处理程序/etc/rsyslog.d/tomcat9.conf

# Send Tomcat messages to catalina.out when using systemd
$template TomcatFormat,"[%timegenerated:::date-year%-%timegenerated:::date-month%-%timegenerated:::date-day% %timegenerated:::date-hour%:%timegenerated:::date-minute%:%timegenerated:::date-second%] [%syslogseverity-text%]%msg%\n"

:programname, startswith, "tomcat9" {
  /data/ebs1/tomcat-logs/catalina.out;TomcatFormat
  stop
}

我将其从 /var/log/tomcat9 更改为 /data/ebs1/tomcat-logs。

所以现在当我查看 /data/ebs1/tomcat-logs 时,我会看到 catalina 带日期戳的日志文件,catalina.2020-03-25.log但没有 catalina.out。而且 catalina 带日期戳的日志文件并不包含所有内容。所以有些日志会转到那里,有些日志仍会转到 syslog。我希望让所有日志都转到我的 catalina.out。我甚至不知道谁负责创建带日期戳的 catalina 文件。Syslog?Tomcat?我担心的是,如果我的日志仍转到 /var/log/syslog,我的磁盘很快就会被占满。

谢谢你!

答案1

好吧,事实证明我发布的配置确实正确。但我遇到了一些问题。
journalctl -u rsyslog显示 rsyslog 对新的 catalina.out 没有写入权限。 adm是文件夹上的组(幸运的是 syslog 也在该组中)。添加组写入权限解决了这个问题。

因此,即使 /etc/rsyslog.d/tomcat9.conf 中有一个“stop”,我仍然可以在 /var/log/syslog 中获取输出。我没有意识到的是,/etc/rsyslog.conf 从 /etc/rsyslog.d/ 加载配置文件姓名顺序。/etc/rsyslog.d/ 的内容如下:

20-ufw.conf
21-cloudinit.conf
50-default.conf
tomcat9.conf

我刚刚将文件重命名为“default”,一切正常。/var/log/syslog 中不再有日志!

20-ufw.conf
21-cloudinit.conf
30-tomcat9.conf
50-default.conf

不管怎样,给自己击掌吧。

相关内容