Просто, чтобы быть уверенным, позволяет котировка разделы, которые имеют значение из документации вы имели в виду:
Java EE приложений
Java, EE приложение будет состоять из одного или нескольких ВОЙНЫ файлы и возможны некоторые EJB, обычно все они упакованы в файл EAR. Обычно желательно, чтобы имела единую конфигурацию, которая применяется ко всем компонентам в EAR. Классы каротажа обычно помещаются в местоположение, совместно используемое всеми компонентами, и конфигурация также должна быть разделяемой. Обязательно следуйте инструкциям, чтобы инициализировать Log4j 2 в веб-приложении.
От "Using Log4j 2 in Web Applications":
Конфигурация
Log4j позволяет конфигурационный файл будет указан в web.xml с помощью параметра контекста log4jConfiguration. Log4j будет искать конфигурационные файлы по:
- Если местоположение при условии, что будет искаться в качестве контекста сервлета ресурса. Например, если log4jConfiguration содержит «logging.xml» , тогда Log4j будет искать файл с этим именем в корневом каталоге веб-приложения.
- Если местоположение не определено, Log4j будет искать для файла, который начинается с «log4j2» в каталоге WEB-INF. Если найдено больше , чем один файл, и если файл, начинающийся с «log4j2-name» , присутствует, где имя - это имя веб-приложения, то оно будет использоваться . В противном случае будет использоваться первый файл.
- Последовательность поиска «нормальный» с использованием URL-адреса пути и файлов будет использоваться для . Найдите файл конфигурации.
Обратите внимание, что при запуске из EAR, каждый модуль в нем начинает обычно с использованием его собственной изоляции загрузчик классов.
Первая попытка заставить его работать, предоставляя log4j2 как часть отдельных встроенных компонентов войны.
Итак, я не уверен, что вы используете, чтобы собрать свой EAR, но проще всего отбросить его в WEB-INF (каждый) вашего веб-модуля (войны), упакованного в ваше приложение EE (EAR).
Если вы используете maven, у вас будут отдельные проекты для ваших индивидуальных EJB и веб-модулей. Таким образом, вы должны быть в состоянии предоставить файл log4j2 в следующих местах:
- Web Module: SRC/основные/WebAPP/WEB-INF
- EJB: SRC/основные/ресурсы (которые должны позволить Maven копию это в META-INF в вашей банке).
Чтобы предоставить файл log4j2 как часть вашего EAR (разделяемого модулями), я думаю, что запись в Class-Path должна быть сделана в вашем META-INF/MANIFEST.MF. Вы должны указать каталог или местоположение ресурса ресурса как часть класса. Для предоставления каталога потребуется trailing path separator.
Я не пробовал это только сейчас, но надеюсь, что это даст вам ключ, и вы поправите меня там, где это необходимо.
Также Log4j2 имеет функцию automatically reload on changes и приспосабливается к нему на лету. Для того, чтобы работать в ваших интересах, я настоятельно рекомендую вам предоставить файл Log4j2 как часть пути к серверу, а не встроен глубоко в вашу банку, войну или ухо. Это будет проще найти и изменить.
Путь прямо в корне EAR должен работать. Что вы используете для сборки/упаковки вашего EAR? Затмение? Maven? Муравей? Вы проверили встроенный/упакованный EAR, разархивировав его и проверив, находится ли файл XML в корне EAR? – BalusC
@BalusC привет. Я уже сделал это тестирование, поставив XML-файл в корень уха и проверил его, открыв пакет. –
Просьба пояснить: каково расположение файлов журнала log4j2? Внутри вашего EAR (где?) Или в пути класса веб-сервера? –