如何通过Spring Boot将日志写入ELK系统?
- 内容介绍
- 文章标签
- 相关推荐
本文共计685个文字,预计阅读时间需要3分钟。
在Spring Boot项目中连接Elasticsearch集群的Logstash,并写入指定索引的日志,然后使用Kibana进行日志查询和分析,具体步骤如下:
1. 在Spring Boot项目中添加依赖:xml net.logstash.logback logstash-logback-encoder 5.
2. 在`application.properties`或`application.yml`中配置Elasticsearch集群地址:propertieselasticsearch.host=localhostelasticsearch.port=9200
3. 创建日志配置文件(如`logback-spring.xml`),配置Logstash Logback Encoder:xml localhost 5044 %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
4. 创建日志实体类(如`LogEntity.java`),包含需要写入Elasticsearch的字段:javapublic class LogEntity { private String index; private String type; private String message;
// Getters and Setters}
5. 创建日志服务类(如`LogService.java`),实现日志写入功能:java@Servicepublic class LogService { @Autowired private LogstashTcpSocketAppender logstashAppender;
public void writeLog(String index, String message) { LogEntity logEntity=new LogEntity(); logEntity.setIndex(index); logEntity.setType(log); logEntity.setMessage(message);
String json=new ObjectMapper().writeValueAsString(logEntity); logstashAppender.append(json); }}
6. 在需要记录日志的地方调用`LogService`的`writeLog`方法,传入索引和日志内容:java@Servicepublic class SomeService { @Autowired private LogService logService;
public void someMethod() { logService.writeLog(some-index, This is a log message); }}
7. 使用Kibana进行日志查询和分析。
8. 使用Elasticsearch保存日志数据。
springboot里连接elk里的logstash,然后写指定index索引的日志,而之后使用kibana去查询和分析日志,使用elasticsearch去保存日志。
添加引用
implementation 'net.logstash.logback:logstash-logback-encoder:5.3'
添加配置
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="./logs" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n</pattern> </encoder> </appender> <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <param name="Encoding" value="UTF-8"/> <destination>127.0.0.1:5000</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" > <customFields>{"appname":"elkDemo"}</customFields> </encoder> </appender> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="logstash" /> </root> </configuration>
指定配置
server.port=81 logging.config=classpath:logback-spring.xml
logstash配置索引
input { tcp { port => 5000 codec => "json" } } ## Add your filters / logstash plugins configuration here output { elasticsearch { hosts => "elasticsearch:9200" user => "elastic" password => "changeme" index => "%{[appname]}" } }
kibana里建立索引
通过kiban菜单去建立索引:Management>Index patterns>Create index pattern,这里会显示可用的索引名称。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计685个文字,预计阅读时间需要3分钟。
在Spring Boot项目中连接Elasticsearch集群的Logstash,并写入指定索引的日志,然后使用Kibana进行日志查询和分析,具体步骤如下:
1. 在Spring Boot项目中添加依赖:xml net.logstash.logback logstash-logback-encoder 5.
2. 在`application.properties`或`application.yml`中配置Elasticsearch集群地址:propertieselasticsearch.host=localhostelasticsearch.port=9200
3. 创建日志配置文件(如`logback-spring.xml`),配置Logstash Logback Encoder:xml localhost 5044 %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
4. 创建日志实体类(如`LogEntity.java`),包含需要写入Elasticsearch的字段:javapublic class LogEntity { private String index; private String type; private String message;
// Getters and Setters}
5. 创建日志服务类(如`LogService.java`),实现日志写入功能:java@Servicepublic class LogService { @Autowired private LogstashTcpSocketAppender logstashAppender;
public void writeLog(String index, String message) { LogEntity logEntity=new LogEntity(); logEntity.setIndex(index); logEntity.setType(log); logEntity.setMessage(message);
String json=new ObjectMapper().writeValueAsString(logEntity); logstashAppender.append(json); }}
6. 在需要记录日志的地方调用`LogService`的`writeLog`方法,传入索引和日志内容:java@Servicepublic class SomeService { @Autowired private LogService logService;
public void someMethod() { logService.writeLog(some-index, This is a log message); }}
7. 使用Kibana进行日志查询和分析。
8. 使用Elasticsearch保存日志数据。
springboot里连接elk里的logstash,然后写指定index索引的日志,而之后使用kibana去查询和分析日志,使用elasticsearch去保存日志。
添加引用
implementation 'net.logstash.logback:logstash-logback-encoder:5.3'
添加配置
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="./logs" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n</pattern> </encoder> </appender> <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <param name="Encoding" value="UTF-8"/> <destination>127.0.0.1:5000</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" > <customFields>{"appname":"elkDemo"}</customFields> </encoder> </appender> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="logstash" /> </root> </configuration>
指定配置
server.port=81 logging.config=classpath:logback-spring.xml
logstash配置索引
input { tcp { port => 5000 codec => "json" } } ## Add your filters / logstash plugins configuration here output { elasticsearch { hosts => "elasticsearch:9200" user => "elastic" password => "changeme" index => "%{[appname]}" } }
kibana里建立索引
通过kiban菜单去建立索引:Management>Index patterns>Create index pattern,这里会显示可用的索引名称。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

