根据不同的 Profile 激活不同的 Log4j2 配置
1、概览
本文将带你了解如何在 Spring Boot 中根据不同的 Profile 激活不同的 Log4j2 配置。
2、使用不同的配置文件
例如,假设我们有两个文件:log4j2.xml
和 log4j2-dev.xml
,一个用于默认配置文件,另一个用于 dev
Profile。
创建 application.properties
文件,指定日志配置文件:
logging.config=/path/to/log4j2.xml
接着,为 dev
Profile 创建一个名为 application-dev.properties
的新 properties 文件,并添加类似的日志配置:
logging.config=/path/to/log4j2-dev.xml
如果还有其他的 Profile,例如 prod
,只需为其创建一个名称相似的 properties 文件 - application-prod.properties
。特定 Profile 的属性总是优先于默认属性。
3、编程式配置
可以通过更改 Spring Boot Application
类,以编程方式选择使用哪个 Log4j2 配置文件:
@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");
}
}
}
Configurator
是 Log4j2 库的一个类。它提供了几种使用配置文件位置和各种可选参数构建 LoggerContext
的方法。
这种解决方案有一个缺点:应用启动过程不会使用 Log4j2
记录日志。
4、总结
本文介绍了在 Spring Boot 应用中为不同 Profile 启用不同 Log4j2 配置的 2 种方法。一是根据不同的 Profile 配置文件加载不同的 Log4j2 配置,二是以编程式在运行时加载不同的 Log4j2 配置。
Ref:https://www.baeldung.com/spring-log4j2-config-per-profile