欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > ELK模块封装starter

ELK模块封装starter

2025/2/1 22:49:00 来源:https://blog.csdn.net/m0_64637029/article/details/145404255  浏览:    关键词:ELK模块封装starter

文章目录

    • 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文件配置属性值

1.combinations-elk-starter

1.目录结构

CleanShot 2025-01-10 at 22.58.37@2x

2.log4j2-spring.xml 从环境变量读取host和port
    <!-- logstash 的 SocketAppender 配置 --><Property name="socket.host">${sys:socket.host}</Property><Property name="socket.port">${sys:socket.port}</Property>

CleanShot 2025-01-10 at 22.59.35@2x

3.ELKProperties.java 两个属性
package com.sunxiansheng.elk.config.properties;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;/*** Description: ELK 属性** @Author sun* @Create 2025/1/10 22:32* @Version 1.0*/
@ConfigurationProperties(prefix = "sun-rays.elk.logstash")
@Data
public class ELKProperties {/*** LogStash的主机*/private String host;/*** LogStash的端口*/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;/*** Description: ELK自动配置类** @Author sun* @Create 2024/12/31 13:14* @Version 1.0*/
@Configuration
@EnableConfigurationProperties({ELKProperties.class}) // 启用配置类
@Slf4j
public class ELKAutoConfiguration {/*** 自动配置成功日志*/@PostConstructpublic 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;/*** Description: 配置文件已加载,Environment 对象已初始化* 使用 ApplicationEnvironmentPreparedEvent 读取 application.yml 文件中的 sun-rays.elk.logstash.host 和 sun-rays.elk.logstash.port 配置** @Author sun* @Create 2025/1/10 22:46* @Version 1.0*/
public class ELKEnvironmentPreparedListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {@Overridepublic void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {ConfigurableEnvironment environment = event.getEnvironment();// 获取 socket.host 属性并提供默认值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);}// 获取 socket.port 属性并提供默认值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);}/*** 当前监听器的启动顺序需要在日志配置监听器的前面,保证在日志文件初始化之前读取 application.yml 的配置。** @return*/@Overridepublic 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

2.combinations-elk-starter-demo

1.目录结构

CleanShot 2025-01-10 at 23.04.10@2x

2.application.yml 配置elk属性
sun-rays:log4j2:home: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-combinations-demo/combinations-elk-starter-demo/logs # 日志根目录(默认./logs)module: sunrays-combinations-demo/combinations-elk-starter-demo # 模块根目录从仓库根目录开始(默认defaultModule)env:path: /Users/sunxiansheng/IdeaProjects/sunrays-framework/sunrays-combinations-demo/combinations-elk-starter-demo # .env文件的绝对路径elk:logstash:host: ${ELK_LOGSTASH_HOST} # LogStash的主机port: ${ELK_LOGSTASH_PORT} # LogStash的端口
3…env文件配置属性值
ELK_LOGSTASH_HOST=host
ELK_LOGSTASH_PORT=port

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com