gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:07 27 4
gpt4 key购买 nike

我想根据当前的 Activity 配置文件使用不同的 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:${main:spring.profiles.active}

MainMapLookup.setMainArguments(new String[] {"spring.profiles.active", "dev"});
SpringApplication.run(source, args);

可以通过如下方式获取vmargs,在运行spring app之前动态设置profile:ManagementFactory.getRuntimeMXBean().getInputArguments()


或者更好的是,多年后回到这里:使用 ${sys:spring.profiles.active},因为用 -D 给出的任何参数都算作 SystemProperties。在这种情况下,您不需要 MainMapLookup


作为替代方案:只需登录到类路径 logs 目录,并在执行目录中设置一个软链接(soft link),例如 ln -s/var/log logs 以重定向运行系统的日志目录。

关于java - 如何通过 application.properties 定义 log4j2 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com