Переопределить log4j.properties - PullRequest
16 голосов
/ 23 ноября 2010

Мое java-приложение ссылается на сторонний jar-файл, который использует log4j.Проблема в том, что этот jar содержит свой собственный файл log4j.properties, который вызывает исключение доступа на моем компьютере, но у меня нет контроля над файлом jar, чтобы изменить его содержимое.

Я попытался добавить свой собственныйФайл log4j.properties в пути к классам моего приложения, но, похоже, он не дает эффекта.Если я пытаюсь использовать PropertyConfigurator для программного импорта моих настроек, кажется, что log4j сначала загружает файл свойств файла jar (вызывает исключение).

Как я могу замкнуть log4j, чтобы игнорировать сторонний файл jarфайл log4j.properties и использовать мой собственный?

Ответы [ 2 ]

15 голосов
/ 23 ноября 2010

Есть несколько способов переопределить log4j.properties, один из них:

  • Используйте log4j.xml , пожалуйста, смотрите расширение

Другой подход:

  • Установка системного свойства log4j.defaultInitOverride на любое другое значение, тогда как "false" заставит log4j пропустить процедуру инициализации по умолчанию (эта процедура).
  • Установите строковую переменную ресурса равной значению системного свойства log4j.configuration.Предпочтительный способ указать файл инициализации по умолчанию - через системное свойство log4j.configuration.Если системное свойство log4j.configuration не определено, задайте для ресурса строковой переменной значение по умолчанию «log4j.properties».
  • Попытка преобразовать переменную ресурса в URL.
  • Если переменная ресурса не может быть преобразована в URL-адрес, например, из-за MalformedURLException, выполните поиск ресурса из classpath, вызвав org.apache.log4j.helpers.Loader.getResource (resource, Logger.class), который возвращает URL-адрес,Обратите внимание, что строка «log4j.properties» представляет собой некорректный URL.См. Список найденных местоположений в Loader.getResource (java.lang.String).
  • Если URL-адрес не найден, отмените инициализацию по умолчанию.В противном случае настройте log4j из URL.PropertyConfigurator будет использоваться для анализа URL-адреса для настройки log4j, если только URL-адрес не заканчивается расширением «.xml», и в этом случае будет использоваться DOMConfigurator.Вы можете дополнительно указать пользовательский конфигуратор.Значение системного свойства log4j.configuratorClass принимается как полное имя класса вашего пользовательского конфигуратора.Указанный вами настраиваемый конфигуратор должен реализовывать интерфейс Конфигуратора.

Ref: http://logging.apache.org/log4j/1.2/manual.html

0 голосов
/ 03 мая 2019

Если ни одно из этих действий не работает

Добавьте это следующее утверждение в конфигурацию вашего приложения

BasicConfigurator.configure();

это сработало для меня

...