java – 如何通过application.properties定义log4j2路径?

我想根据当前活动的配置文件使用不同的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.

上一篇:java – 使用异步记录器时,为什么使用Log4J2写入大量日志条目会更慢


下一篇:java – Log4J2 AsyncLogger以高并发性填充LMAX disruptor的环形缓冲区