我最近刚刚部署了 tomcat 9,我想在运行时检查 catalina.out 日志,但我注意到当停止时它会将日志输出转储到 catalina.[date].txt 文件中。是否需要进行一些其他配置才能启用对 catalina.out 的实时日志记录?
答案1
Ubuntu 18.04 和 20.04 现在使用“systemd”并记录到日志中。要更改此设置,请执行以下操作:
编辑文件:/lib/systemd/system/tomcat9.service
注释掉以下行:SyslogIdentifier=tomcat9
并添加以下两行:
StandardOutput=append:/var/log/tomcat9/catalina.out
StandardError=append:/var/log/tomcat9/catalina.out
答案2
默认情况下,至少在 Linux 上,我所知道的每个版本的 Tomcat 都会将控制台日志写入,$TOMCAT_HOME/logs/catalina.out
或者如果已定义$CATALINA_OUT
,则写入该变量内的文件名中。
实际上,这是从启动脚本完成的,这是 Tomcat 9.0.0.M13 的启动脚本的相关部分,但其他版本也执行相同的操作,文件:$TOMCAT_HOME/bin/startup.sh
它调用catalina.sh
:
启动.sh:
#!/bin/sh
[...]
PRGDIR=`dirname "$PRG"`
EXECUTABLE=catalina.sh
[...]
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
catalina.sh:
#!/bin/sh
[...]
# CATALINA_OUT (Optional) Full path to a file where stdout and stderr
# will be redirected.
# Default is $CATALINA_BASE/logs/catalina.out
[...]
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
[...]
elif [ "$1" = "start" ] ; then
[...]
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
因此,您要么在某处设置该变量,要么在不使用启动脚本的情况下启动 tomcat。
答案3
Tomcat 9 用途systemd为其标准输出。您可以通过调用以下方法覆盖此设置:sudo systemctl edit tomcat9
这将创建一个文件/etc/systemd/system/tomcat9.service.d/override.conf
。在这里你应该在适当的标签 [Service] 下添加覆盖:
[Service]
StandardOutput=append:/var/log/tomcat9/catalina.out
StandardError=append:/var/log/tomcat9/catalina.out
SyslogIdentifier=
这是 Ted、Borea 和https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services