如何通过Spring Boot将日志写入ELK系统?

更新于
2026-07-29 13:17:03
14阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计685个文字,预计阅读时间需要3分钟。

如何通过Spring Boot将日志写入ELK系统?

在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去保存日志。

添加引用

如何通过Spring Boot将日志写入ELK系统?

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将日志写入ELK系统?

在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去保存日志。

添加引用

如何通过Spring Boot将日志写入ELK系统?

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,这里会显示可用的索引名称。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。