Как прочитать свойство из application.properties при использовании ConfigurationFactory (программная конфигурация Log4j)?

Я использую программную конфигурацию для log4j, как показано по следующей ссылке: http://logging.apache.org/log4j/2.x/manual/customconfig.html.

@Plugin(name = "CustomConfigurationFactory", category = ConfigurationFactory.CATEGORY)
@Order(50)
public class CustomConfigurationFactory extends ConfigurationFactory {

    static Configuration createConfiguration(final String name, ConfigurationBuilder<BuiltConfiguration> builder) {
        builder.setConfigurationName(name);
        builder.setStatusLevel(Level.ERROR);
        builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL).
            addAttribute("level", Level.DEBUG));
        AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").
            addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);
        appenderBuilder.add(builder.newLayout("PatternLayout").
            addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable"));
        appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY,
            Filter.Result.NEUTRAL).addAttribute("marker", "FLOW"));
        builder.add(appenderBuilder);
        builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG).
            add(builder.newAppenderRef("Stdout")).
            addAttribute("additivity", false));
        builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout")));
        return builder.build();
    }

    @Override
    public Configuration getConfiguration(final LoggerContext loggerContext, final ConfigurationSource source) {
        return getConfiguration(loggerContext, source.toString(), null);
    }

    @Override
    public Configuration getConfiguration(final LoggerContext loggerContext, final String name, final URI configLocation) {
        ConfigurationBuilder<BuiltConfiguration> builder = newConfigurationBuilder();
        return createConfiguration(name, builder);
    }

    @Override
    protected String[] getSupportedTypes() {
        return new String[] {"*"};
    }
}

Я хочу выбрать приложение на основе application.properties
Я пробовал все ответы, опубликованные на Как получить доступ к значению, определенному в файле application.properties в Spring Boot. Но ни один из них не работает, выдавая такие ошибки, как Spring Boot - Environment @Autowired throws NullPointerException. Решения, упомянутые в приведенной выше ссылке, также не работают.


person Akhil    schedule 18.07.2021    source источник
comment
Не могли бы вы приложить код вашей пользовательской ConfigurationFactory?   -  person Osama Abdul Rehman    schedule 18.07.2021
comment
@OsamaAbdulRehman Я использую точный код, указанный в logging.apache.org/ log4j/2.x/manual/customconfig.html   -  person Akhil    schedule 19.07.2021
comment
В любом случае прикрепите его, чтобы другие могли ответить, основываясь на фактическом коде, который не работает должным образом.   -  person Osama Abdul Rehman    schedule 19.07.2021
comment
@OsamaAbdulRehman Спасибо за предложение. Сделанный.   -  person Akhil    schedule 19.07.2021