我想根据当前活动的配置文件使用不同的log4j2日志记录.但它不起作用.
#application.properties:
spring.profiles.active=dev
log.path=d:/${spring.profiles.active}
#log4j2.xml:
<Properties>
<property name="path">${bundle:application:log.path}</property>
</Properties>
结果:在d:/ $${spring.profiles.active}上创建一个文件夹,而不是解析为真正的spring配置文件名称.为什么?
解决方法:
我解决了如下:
log4j2.xml:
${主:spring.profiles.active}
MainMapLookup.setMainArguments(new String[] {"spring.profiles.active", "dev"});
SpringApplication.run(source, args);
您可以按如下方式获取vmargs,并在运行spring app之前动态设置配置文件:
ManagementFactory.getRuntimeMXBean().getInputArguments()
或者甚至更好,多年后回到这里:
使用${sys:spring.profiles.active},作为使用-D计数的任何参数计为SystemProperties.在这种情况下,您不需要MainMapLookup.