Как настроить EBS tomcat8 для использования log4j2 - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь перенастроить 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
...