Перейти к основному содержимому

Различные конфигурации Log4j2 для каждого профиля Spring

· 2 мин. чтения

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 при запуске приложения на основе активного профиля.