log4j2参数从springboot配置文件中读取

本文深入探讨了SpringBoot应用的启动配置过程,包括使用SpringApplicationBuilder进行自定义初始化,以及如何通过系统属性设置来动态调整服务器ID,适用于希望深入了解SpringBoot内部机制的开发者。
    public static void main(String[] args) {
//        ConfigurableApplicationContext ac =
//                SpringApplication.run(Main.class, args); // 使用下一行代码替换
        ConfigurableApplicationContext ac = new SpringApplicationBuilder(Main.class)
                .web(false)
                .initializers((ConfigurableApplicationContext context) -> {
                    System.setProperty("serverId", context.getEnvironment().getProperty("serverId"));
                })
                .run(args);
    }
<Property name="logdir">/logs/server_${sys:serverId}</Property>
<Routing name="Routing">
<RollingFile></RollingFile> <!-- Routing里不能加RollingFile 会报错-->
</Routing>

转载于:https://my.oschina.net/corleone/blog/2236757

参考资料未提及在log4j2中获取springboot配置信息的方法。但通常可以通过以下通用思路实现: ### 使用Log4j2的Lookup机制 Log4j2提供了Lookup机制,允许在配置文件中引用外部属性。可以自定义Lookup来获取Spring Boot的配置信息。以下是一个简单示例: 首先,创建一个自定义的Lookup类: ```java import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.lookup.AbstractLookup; import org.apache.logging.log4j.core.lookup.StrLookup; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component @Plugin(name = "SpringLookup", category = StrLookup.CATEGORY) public class SpringLookup extends AbstractLookup { @Value("${your.property.key:defaultValue}") private String propertyValue; @Override public String lookup(LogEvent event, String key) { if ("your.property.key".equals(key)) { return propertyValue; } return null; } } ``` 然后,在log4j2.xml中使用自定义的Lookup: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <!-- 使用自定义Lookup获取Spring Boot配置信息 --> <Property name="myProperty">${SpringLookup:your.property.key}</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${myProperty} %m%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ``` ### 通过Spring Boot的配置类传递信息 可以在Spring Boot的配置类中读取配置信息,然后将其传递给Log4j2配置。例如: ```java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @Configuration public class Log4j2Config { private static final Logger logger = LogManager.getLogger(Log4j2Config.class); @Value("${your.property.key}") private String propertyValue; public Log4j2Config() { // 在构造函数中可以将配置信息传递给Log4j2 System.setProperty("your.property.key", propertyValue); } } ``` 在log4j2.xml中使用系统属性: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <Property name="myProperty">${sys:your.property.key}</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${myProperty} %m%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值