Где находится правильное место для размещения Log4j.properties в проекте Eclipse? - PullRequest
58 голосов
/ 22 февраля 2011

Где в моем проекте Eclipse я должен добавить файл log4j.properties, чтобы он работал как положено?

Ответы [ 10 ]

84 голосов
/ 22 февраля 2011

вы можете добавить его в любое удобное вам место. Когда вы запустите свой проект, сконфигурируйте classpath и добавьте расположение файлов log4j.properties, нажав: Выполнить -> Выполнить настройку -> [вкладка classpath] -> нажать на Записи пользователя -> Дополнительно -> Выбрать Добавить папку -> выбрать местоположение файла log4j.properties

, а затем -> ОК -> запустить

и он должен загрузиться

33 голосов
/ 22 февраля 2011

Самый безопасный способ IMO - указывать на файл в вашей конфигурации run / debug

-Dlog4j.configuration=file:mylogging.properties

! Помните: при использовании конфигураций запуска eclipse обязательна спецификация протокола file:.

Таким образом, регистратор не будет отлавливать какие-либо logging.properties, которые предшествуют в classpath, ни те, которые заданы по умолчанию в JDK.

Кроме того, рассмотрите возможность использования log4j.xml, который имеет более богатый синтаксис выражений и допускает больше вещей (log4j.xml имеет приоритет над log4j.properties.

12 голосов
/ 22 февраля 2011

Добавьте файл log4j.properties в путь класса времени выполнения проекта.Некоторые люди добавляют это в корень дерева исходного кода (чтобы оно копировалось в корень скомпилированных классов).

Редактировать: Если ваш проект - проект maven, вы можетепоместите log4j.properties в папку src / main / resources (и src / test / resources для ваших модульных тестов).

Если у вас несколько сред (например, для разработки и производства), вам нужна другая регистрация дляв каждой среде и хотите развернуть один и тот же файл jar (или war, или ear) в каждой среде (как в одной сборке для всех сред), затем сохранить файл log4j.properties вне файла jar и поместить его в путь к классу длякаждая среда (настраивается средой).Исторически я включал некоторые известные каталоги в каждую среду в classpath и развертывал там специфичные для среды вещи.Например, ~ tomcat_user / localclasspath, где ~ tomcat_user - домашний каталог пользователя, который будет запускать экземпляр tomcat, в который будет развернут мой файл war.

10 голосов
/ 22 февраля 2011

Лучший способ - создать специальную исходную папку с именем resources и использовать ее для всех ресурсов, включая log4j.properties.Так что просто положи его туда.

В папке Java Resources, которая была автоматически создана Dynamic Web Project, щелкните правой кнопкой мыши и добавьте новую исходную папку и назовите ее «resources».Файлы здесь будут затем экспортированы в файл war в каталог классов

7 голосов
/ 06 июня 2016

Если у вас есть библиотека, и вы хотите добавить log4j:

  1. Создайте папку с именем «resources» в вашем проекте.
  2. Создайте файл .properties с именем log4j
  3. Установить свойства в файле log4j.properties
  4. Нажмите правую кнопку в проекте и перейдите в Properties-> Java Build Path и, наконец, перейдите на вкладку «Source».
  5. Нажмите Добавить папку и найдите папку «resources», созданную на шаге 1.
  6. Готово.

(я предполагаю, что у вас есть добавленная библиотека log4j.)

PD: Извините за мой английский.

4 голосов
/ 22 февраля 2011

На этот вопрос уже дан ответ здесь

Путь к классам никогда не включает в себя определенные файлы.Он включает в себя каталоги и файлы JAR.Итак, поместите этот файл в каталог, который находится в вашем classpath.

Log4j свойства (обычно) не используются в разработке приложений (если вы не отлаживаете сам Eclipse!).Итак, что вам действительно нужно для создания исполняемого Java-приложения (Application, WAR, EAR и т. Д.) И включить свойства Log4j в путь к классам во время выполнения.

3 голосов
/ 22 февраля 2011

Поместите log4j.properties в путь к классу времени выполнения.

Этот форум показывает несколько сообщений о возможных способах сделать это.

2 голосов
/ 23 февраля 2011

Как правило, я помещаю его в специальную папку "res" или "resources", как уже было сказано, но после этого для веб-приложения я копирую задачу log4j.properties с ant в каталог WEB-INF / classes.то же самое, что поместить файл в корень папки src /, но обычно я предпочитаю видеть его в отдельной папке.

В Maven обычным местом для размещения является папка src/main/resources, как ответили вэто другой пост . Все ресурсы, которые там будут идти в вашу сборку в корневом пути к классам (например, target/classes/)

Если вам нужен мощный регистратор, вы также можете посмотреть библиотека slf4j , которая является фасадом регистратора и может использовать реализацию log4j.

1 голос
/ 17 июля 2014

Вы не хотите, чтобы log4j.properties упаковывались вместе с вашим проектом для развертывания - это плохая идея, как упоминали другие авторы.

Найдите корневую установку Tomcat, на которую указывает Eclipse, когда оназапускает ваше приложение и добавляет туда файл log4j.properties в нужном месте.Для Tomcat 7 правильное место:

$ {TOMCAT_HOME} / lib

1 голос
/ 11 апреля 2014

Я выясняю, что расположение файла log4j.properties зависит от типа проекта Eclipse.

В частности, для Eclipse Dynamic Web Project большинство ответов, которые включают добавление log4j.properties в файл war, на самом деле не добавляют файл свойств в правильное местоположение, особенно для Tomcat / Apache.

Вот некоторые из моих исследований и моего решения этой проблемы (опять же специально для Dynamic Web Project, работающего на Tomcat / Apache 6.0)

  • Пожалуйста, обратитесь к этой статье, чтобы узнать, как Tomcat будет загружать классы. Это отличается от обычного загрузчика классов для Java. (https://www.mulesoft.com/tcat/tomcat-classpath) Обратите внимание, что он выглядит только в двух местах в файле war, WEB-INF / classes и WEB-INF / lib.

  • Обратите внимание, что в случае динамического веб-проекта нецелесообразно хранить файл .properties в каталоге build /../ classes, поскольку этот каталог стирается всякий раз, когда вы чистите сборку проекта.

  • Tomcat не обрабатывает файлы .property в расположении WEB-INF / lib.

  • Вы не можете сохранить файл log4j.properties в каталоге src, так как Eclipse абстрагирует этот каталог от вашего просмотра.

  • Единственный способ решить эту проблему - изменить сборку и добавить дополнительный каталог, который в конечном итоге загрузится в каталог WEB-INF / classes в файле war. В частности ....

(1) Щелкните правой кнопкой мыши свой проект в проводнике проектов, выберите «Создать» -> «Папка». Вы можете назвать папку как угодно, но стандартом в этом случае является «ресурсы». Новая папка должна появиться на корневом уровне вашего проекта.

(2) Переместите файл log4j.properties в эту новую папку.

(3) Снова щелкните правой кнопкой мыши по проекту и выберите «Build-Path» -> «Configure Build Path». Выберите вкладку «Источники». Нажмите кнопку «Добавить папку». Найдите и найдите новую папку, созданную на шаге (1) выше. Выберите «ОК».

(4) Вернувшись к представлению Project Explorer в Eclipse, обратите внимание, что папка теперь перемещена в область «Java Resources» (т.е. она больше не находится в корне из-за абстракции представления Eclipse).

(5) Чистая сборка вашего проекта.

(6) Чтобы проверить, что файл .properties теперь существует в WEB-INF / classes в вашем файле war, экспортируйте файл war в удобное место (щелкните правой кнопкой мыши Project -> Export -> War file) и извлеките содержимое , Обратите внимание, что файл log4j.properties теперь появляется в WEB-INF / classes.

(7) Продвиньте свой проект на Tomcat / Apache и обратите внимание, что log4j теперь работает.

Теперь, когда log4j работает, начинайте регистрировать, решайте мировые проблемы, отдыхайте и наслаждайтесь вкусным напитком для взрослых.

...