Переопределить log4j.properties

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

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

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

Ответы

Ответ 1

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

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

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

  • Установка системного свойства log4j.defaultInitOverride для любого другого значения то "false" приведет к тому, что log4j пропустит процедуру инициализации по умолчанию (эта процедура).
  • Задайте переменную строки ресурса значению свойства системы log4j.configuration. Предпочтительный способ указать файл инициализации по умолчанию - это свойство системы log4j.configuration. Если системное свойство log4j.configuration не определено, установите для параметра string variable resource значение по умолчанию "log4j.properties".
  • Попытка конвертировать переменную ресурса в URL-адрес.
  • Если переменная ресурса не может быть преобразована в URL-адрес, например, из-за ошибки MalformedURLException, выполните поиск ресурса из пути к классам, вызвав 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 берется как полное имя класса вашего настраиваемого конфигуратора. Пользовательский настраиваемый конфигуратор должен реализовывать интерфейс Configurator.

Ссылка: http://logging.apache.org/log4j/1.2/manual.html

Ответ 2

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

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

BasicConfigurator.configure();

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