1.安装elk

2.idea创建springboot项目

File -> New -> Project

3.选择Spring Initializr,点击Next

es7.8 spring boot 集成 spring boot elk集成_xml

4.直接Next

es7.8 spring boot 集成 spring boot elk集成_xml_02

5.选择Web,勾选Web,点击Next

es7.8 spring boot 集成 spring boot elk集成_elasticsearch_03

6.直接点击Finish创建完成

es7.8 spring boot 集成 spring boot elk集成_spring_04

7.在上一步创建的项目pom.xml中添加以下依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
</dependency>
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>

8.在resources目录下创建logback.xml,添加以下内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>172.29.22.151:9000</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

注:172.29.22.151位logstash服务所在的服务器IP地址,9000为logstash服务config目录下logstash-elasticsearch.conf中配置的端口号

9.验证

创建controller目录下新增DemoController.java,内容如下:

package com.example.elkdemo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * TODO
 *     
 * @author berger.xu
 * @date 2019/4/26
 */
@Slf4j
@RestController
@RequestMapping(value = "/demo")
public class DemoController {

   @GetMapping(value = "/test")
   @ResponseBody
   public void test(){
      log.debug("message0");
      log.info("message1");
      log.warn("message2");
      log.error("message3");
   }
}

在浏览器中访问http://localhost:8088/demo/test;注:其中8088为这个demo服务的端口,加debug级别的日志打印是为了验证logback.xml中配置的INFO日志级别是否生效。

控制台打印了日志内容如下:

 

es7.8 spring boot 集成 spring boot elk集成_xml_05

 

elasticsearch head中的日志内容如下:

es7.8 spring boot 集成 spring boot elk集成_xml_06

 

kibana中的日志内容如下:

es7.8 spring boot 集成 spring boot elk集成_elasticsearch_07