文章目录
- 1.combinations-elk-starter
- 1.目录结构
- 2.log4j2-spring.xml 从环境变量读取host和port
- 3.ELKProperties.java 两个属性
- 4.ELKAutoConfiguration.java 启用配置类
- 5.ELKEnvironmentPreparedListener.java 监听器从application.yml中获取属性值
- 6.spring.factories 注册监听器
- 2.combinations-elk-starter-demo
- 1.目录结构
- 2.application.yml 配置elk属性
- 3..env文件配置属性值
elkstarter_2">1.combinations-elk-starter
1.目录结构
2.log4j2-spring.xml 从环境变量读取host和port
<Property name="socket.host">${sys:socket.host}</Property>
<Property name="socket.port">${sys:socket.port}</Property>
3.ELKProperties.java 两个属性
package com.sunxiansheng.elk.config.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "sun-rays.elk.logstash")
@Data
public class ELKProperties {
private String host;
private Integer port;
}
4.ELKAutoConfiguration.java 启用配置类
package com.sunxiansheng.elk.config;
import com.sunxiansheng.elk.config.properties.ELKProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
@Configuration
@EnableConfigurationProperties({ELKProperties.class})
@Slf4j
public class ELKAutoConfiguration {
@PostConstruct
public void logConfigSuccess() {
log.info("ELKAutoConfiguration has been loaded successfully!");
}
}
5.ELKEnvironmentPreparedListener.java 监听器从application.yml中获取属性值
package com.sunxiansheng.elk.listener;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.boot.context.logging.LoggingApplicationListener;
import org.springframework.context.ApplicationListener;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
public class ELKEnvironmentPreparedListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
ConfigurableEnvironment environment = event.getEnvironment();
String socketHost = environment.getProperty("sun-rays.elk.logstash.host", "127.0.0.1");
if ("127.0.0.1".equals(socketHost)) {
System.err.println("WARNING: sun-rays.elk.logstash.host 属性未设置,使用默认值: " + socketHost);
}
String socketPort = environment.getProperty("sun-rays.elk.logstash.port", "8080");
if ("8080".equals(socketPort)) {
System.err.println("WARNING: sun-rays.elk.logstash.port 属性未设置,使用默认值: " + socketPort);
}
System.setProperty("socket.host", socketHost);
System.setProperty("socket.port", socketPort);
}
@Override
public int getOrder() {
return LoggingApplicationListener.DEFAULT_ORDER - 1;
}
}
6.spring.factories 注册监听器
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sunxiansheng.elk.config.ELKAutoConfiguration
org.springframework.context.ApplicationListener=\
com.sunxiansheng.elk.listener.ELKEnvironmentPreparedListener
elkstarterdemo_146">2.combinations-elk-starter-demo
1.目录结构
elk_152">2.application.yml 配置elk属性
sun-rays:
log4j2:
home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-combinations-demo/combinations-elk-starter-demo/logs
module: sunrays-combinations-demo/combinations-elk-starter-demo
env:
path: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-combinations-demo/combinations-elk-starter-demo
elk:
logstash:
host: ${ELK_LOGSTASH_HOST}
port: ${ELK_LOGSTASH_PORT}
3…env文件配置属性值
ELK_LOGSTASH_HOST=host
ELK_LOGSTASH_PORT=port