Log4J полностью динамическая c конфигурация - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь использовать динамическую c конфигурацию для моего приложения JAR. Все мои ресурсы хранятся в папке /resources/, соответственно log4j не забирает их. Существует PropertyConfigurator.configure(), но не подходит, потому что я использую конфигурацию XML.

Обновление:

Структура моего файла JAR:

jar
  |-------- resources/
             |-------- log4j.properties

log4j2 не видит его.

Мне также нужно динамически загрузить файл log4j2.xml в root папки, если доступно, я пытался использовать

    public static void main(String[] args) throws IOException {
        ConfigurationSource source = new ConfigurationSource(new FileInputStream("log4j2.xml"));
        Configurator.initialize(null, source);
        LoggerContext context = (LoggerContext) LogManager.getContext(false);
        context.updateLoggers();
    }

но это не работает со стати c регистраторами slf4j, и я продолжаю получать.

log4j:WARN No appenders could be found for logger (Class).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Если я использую

PropertyConfigurator.configure(Program.class.getResource("/resource/log4j2.properties"));

, то ошибка исчезает, но игнорирует log4j2.xml в каталоге с jar. И настроить его можно только путем перепаковки приложения.

...