Я пытаюсь перенастроить Tomcat8 для использования log4j2 вместо JUL для внутренней регистрации, используя их официальное руководство: https://tomcat.apache.org/tomcat-8.0-doc/logging.html#Using_Log4j и этот ответ StackOverflow: tomcat 7 внутренняя регистрация с log4j2.xml
Пока что я создал следующую конфигурацию ebextension:
container_commands:
replace-config:
command: cp -f .ebextensions/tomcat/context.xml /etc/tomcat8/
ignoreErrors: true
copy-log4j2-libraries:
command: cp -f .ebextensions/tomcat/log4j-* /usr/share/java/tomcat8/
copy-log4j2-config:
command: cp -f .ebextensions/tomcat/log4j2.xml /etc/tomcat8/
copy-tomcat-env-config:
command: cp -f .ebextensions/tomcat/setenv.sh /etc/tomcat8/
set-ownership:
command: chown root:tomcat /etc/tomcat8/context.xml
command: chown -R root:tomcat /usr/share/java/tomcat8/log4j-*
command: chown -R root:tomcat /etc/tomcat8/log4j2.xml
command: chown root:tomcat /etc/tomcat8/setenv.sh
command: chmod +x /etc/tomcat8/setenv.sh
command: echo ". /etc/tomcat8/setenv.sh" >> /etc/tomcat8/tomcat8.conf
Проблема в том, что tomcat в EBS отличается от того, который вы можете установить локально.Я не смог найти сценарий startup.sh
по умолчанию и из единственного потока, связанного с такими конфигурациями среды (https://forums.aws.amazon.com/thread.jspa?threadID=238893), я понял, что должен каким-то образом изменить tomcat8.conf
для достижения своей цели.
Содержание setenv.sh
:
#!/usr/bin/env bash
#The environment variable CLASSPATH is unset in catalina.sh/catalina.bat
export CLASSPATH=/usr/share/tomcat8/lib/log4j-api-2.11.2.jar:/usr/share/tomcat8/lib/log4j-core-2.11.2.jar:/usr/share/tomcat8/lib/log4j-jul-2.11.2.jar
export JAVA_OPTS=-Dlog4j.configurationFile=/etc/tomcat8/log4j2.xml
export LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager