1. Обзор
В наших предыдущих руководствах Spring Profiles and Logging in Spring Boot мы показали, как активировать различные профили и использовать Log4j2 в Spring.
В этом кратком руководстве мы узнаем , как использовать разные конфигурации Log4j2 для каждого профиля Spring .
2. Используйте разные файлы свойств
Например, предположим, что у нас есть два файла, log4j2.xml
и log4j2-dev.xml
, один для профиля по умолчанию, а другой для профиля «dev».
Давайте создадим наш файл application.properties
и укажем ему, где найти файл конфигурации ведения журнала:
logging.config=/path/to/log4j2.xml
Далее давайте создадим новый файл свойств для нашего профиля «dev» с именем application-dev.properties
и добавим аналогичную строку:
logging.config=/path/to/log4j2-dev.xml
Если у нас есть другие профили — например, «prod» — нам нужно только создать файл свойств с аналогичным названием — application-prod.properties
для нашего профиля «prod». Специфичные для профиля свойства всегда переопределяют свойства по умолчанию .
3. Программная конфигурация
Мы можем программно выбрать, какой файл конфигурации Log4j2 использовать, изменив класс нашего приложения
Spring Boot :
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private Environment env;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... param) {
if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
Configurator.initialize(null, "/path/to/log4j2-dev.xml");
} else {
Configurator.initialize(null, "/path/to/log4j2.xml");
}
}
}
Конфигуратор
— это класс библиотеки Log4j2. Он предоставляет несколько способов создания LoggerContext
с использованием расположения файла конфигурации и различных дополнительных параметров.
У этого решения есть один недостаток: процесс загрузки приложения не будет регистрироваться с помощью Log4j2 .
4. Вывод
Таким образом, мы видели два подхода к использованию разных конфигураций Log4j2 для каждого профиля Spring. Во-первых, мы увидели, что можем предоставить разные файлы свойств для каждого профиля. Затем мы увидели подход к программной настройке Log4j2 при запуске приложения на основе активного профиля.