Я недавно развернул tomcat 9 и хотел бы проверить журнал catalina.out во время его работы, однако я заметил, что при остановке он сбрасывает выходные данные журнала в файл catalina. [Date] .txt. Нужно ли выполнить какие-то дополнительные настройки, чтобы включить ведение журнала в реальном времени на catalina.out?
По умолчанию, по крайней мере, в Linux каждая версия Tomcat, о которой я знаю, записывает журнал консоли $TOMCAT_HOME/logs/catalina.out
или если определено $CATALINA_OUT
, в имени файла внутри этой переменной.
На самом деле это делается из сценариев запуска, вот относительная часть сценария запуска из Tomcat 9.0.0.M13, но другие версии делают то же самое, файл: $TOMCAT_HOME/bin/startup.sh
который вызывает catalina.sh
:
startup.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 без использования стартовых скриптов.
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