mem*_*und 5 java spring log4j 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>
Run Code Online (Sandbox Code Playgroud)
结果:在 d:/ 上创建一个文件夹,${spring.profiles.active}而不是解析为真实的 spring 配置文件名称。为什么?
我解决如下:log4j2.xml:
${main:spring.profiles.active}
MainMapLookup.setMainArguments(new String[] {"spring.profiles.active", "dev"});
SpringApplication.run(source, args);
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式获取 vmargs,并在运行 spring 应用程序之前动态设置配置文件:
ManagementFactory.getRuntimeMXBean().getInputArguments()
或者更好的是,多年后回到这里:使用${sys:spring.profiles.active}, 作为以 count 作为 SystemProperties 给出的任何参数-D。在这种情况下你不需要MainMapLookup。
作为替代方案:仅记录到类路径logs目录,并在执行目录内设置软链接,例如ln -s /var/log logs通过运行系统重定向日志目录。
| 归档时间: |
|
| 查看次数: |
12253 次 |
| 最近记录: |