Где разместить log4j.xml - PullRequest
35 голосов
/ 05 мая 2010

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

Похоже, что по умолчанию log4j просматривает корень папки классов, я могу сказать, что с помощью функции отладки log4j и запуска моего приложения из IDE.

Однако у меня больше нет папки с классами в банке. И файл log4j.xml находится в корне фляги.

Я уже пытался установить параметр -Dlog4j.configuration = log4j.xml, но он не работает.

Вот глобальная структура моего приложения на данный момент:

  • ком
  • Lib
  • мета-инф
  • log4j.xml

Ответы [ 6 ]

32 голосов
/ 05 мая 2010

Находит log4j.xml, используя CLASSPATH. Если log4j не находит файл конфигурации, он отправит сообщение об ошибке на консоль. Если вы не видите такой ошибки, скорее всего, он находит файл конфигурации, который может быть не тем, который вы редактируете. Существует опция командной строки, чтобы заставить Log4J сообщать путь к файлу конфигурации, который он использует.

С http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

Если вы запускаете с "-Dlog4j.debug", то log4j выведет информацию в стандарт выход, рассказывающий, как он пытается настроить сам. Просматривая это скажу где он ищет файл конфигурации.

19 голосов
/ 24 сентября 2012

Предположим, что ваша конфигурация log4j находится за пределами исходного дерева.Если он не может найти ваш файл конфигурации, помогите ему с:

-Dlog4j.configuration=file:///your/path/log4j.xml

Обратите внимание на классификатор file: /// .Это не будет работать без.

5 голосов
/ 07 мая 2010

У меня нет ошибок

Таким образом, log4j находит вашу конфигурацию, в противном случае вы получите:

log4j: ПРЕДУПРЕЖДЕНИЕ Не удалось найти ни одного дополнительного устройства для logger ().
log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.

Также:

Журнал только что распечатан на консоли

Так что это означает, что вам, вероятно, нужно определить файловый аппендер, например FileAppender или RollingFileAppender . Раздел «Конфигурация» в коротком вступлении содержит несколько примеров.

3 голосов
/ 12 июля 2012

Вы можете использовать:

DOMConfigurator.configure(log4jConfigurationFilename);

и укажите местоположение, если оно отличается от корня!

2 голосов
/ 10 октября 2018

Может быть, это очень старый вопрос, но для меня ответ был здесь https://logging.apache.org/log4j/2.x/manual/configuration.html

Согласно приведенной выше ссылке, поиск журналов Apache в classpath для файлов log4j2.xml в определенном порядке, как показано ниже

  1. Log4j проверит системное свойство "log4j.configurationFile" и, если установлено, попытается загрузить конфигурацию, используя ConfigurationFactory, соответствующий расширению файла.
  2. Если системное свойство не установлено, свойства ConfigurationFactory будут искать log4j2-test.properties в classpath.
  3. Если такой файл не найден, Конфигурация YAML будет искать log4j2-test.yaml или log4j2-test.yml в пути к классам.
  4. Если такой файл не найден, JSON ConfigurationFactory будет искать log4j2-test.json или log4j2-test.jsn в пути к классам. Если такой файл не найден, XML ConfigurationFactory будет искать log4j2-test.xml в пути к классам.
  5. Если тестовый файл не может быть найден, свойства ConfigurationFactory будут искать log4j2.properties в пути к классам.
  6. Если файл свойств не может быть найден, Конфигурация YAML будет искать log4j2.yaml или log4j2.yml в пути к классам.
  7. Если не удается найти YAML-файл, JSON ConfigurationFactory будет искать log4j2.json или log4j2.jsn в пути к классам.
  8. Если JSON-файл не может быть найден, XML ConfigurationFactory попытается найти log4j2.xml в пути к классам.
  9. Если файл конфигурации не найден, будет использоваться DefaultConfiguration. Это приведет к тому, что выходные данные журнала перейдут на консоль.
0 голосов
/ 26 апреля 2012

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

Как только вы это заработаете, вы также поймете, как это изменить, поскольку вы понимаете логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...