tomcat 9 中的 catalina.out 在哪里?

tomcat 9 中的 catalina.out 在哪里?

我最近刚刚部署了 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

相关内容