2010-11-23 2 views
13

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

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

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

ответ

15

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

  • Использование log4j.xml см расширение

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

  • Установка log4j.defaultInitOverride Системное свойство для любого другого значения , то «false» приведет к тому, что log4j пропустит процедуру инициализации по умолчанию (эта процедура).
  • Задайте переменную строки ресурса значению свойства системы log4j.configuration. Предпочтительный способ указать файл инициализации по умолчанию - это свойство системы log4j.configuration. Если системное свойство log4j.configuration не определено, установите для ресурса строковой переменной значение по умолчанию «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.

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

+0

URL-адрес относится к концу версии жизни Log4j. Самый близкий эквивалент: https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties –

Смежные вопросы