springboot + elk第四篇:springboot整合elk

1.搭建springboot工程,應該沒人不會搭吧络它,此步驟省略

2.添加相關(guān)依賴禾进,我用的gradle

//變量配置川队,用來定義版本號
ext {
    set('springBootVersion', "2.3.2.RELEASE")
    set('lombokVersion', "1.18.12")
    set('logstashVersion', "6.6")
}

dependencies {
    // logstash日志收集
    implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version: "${logstashVersion}"
    //web依賴
    compile 'org.springframework.boot:spring-boot-starter-web'
    //除了用來生成getter,setter,還用來使用@Slf4j注解
    compile "org.projectlombok:lombok:${lombokVersion}"
    annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
}

spring-boot-starter-web依賴說明:
主要是因為web依賴中包含 spring-boot-starter-logging
項目中正好需要使用web系枪,就只導了web雀哨,如果不需要web依賴,則需要導入spring-boot-starter-logging

3.項目resourses目錄下添加logback.xml配置文件,配置內(nèi)容如下雾棺,注意修改logstash地址

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--獲取springboot的yml配置信息-->
    <springProperty scope="context" name="applicationName" source="spring.application.name" defaultValue="default"/>
    <!--定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
    <property name="LOG_HOME" value="/home"/>
    <!--輸出到控制臺-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <withJansi>false</withJansi>
        <encoder>
            <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
            <!--格式化輸出:%d:表示日期    %thread:表示線程名     %-5level:級別從左顯示5個字符寬度  %msg:日志消息    %n:是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) -- %boldMagenta([%thread]) %boldCyan(%logger) : %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--  日志發(fā)送至logstash  -->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!-- logstash的服務器地址和通信端口 -->
        <destination>192.168.81.120:5043</destination>
        <!-- encoder is required -->
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- 在elasticsearch的index中追加applicationName字段  -->
            <customFields>{"applicationName":"${applicationName}"}</customFields>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件輸出的文件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天數(shù)-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <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>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!-- 日志輸出級別 -->
    <root level="INFO">
        <appender-ref ref="logstash"/>
        <appender-ref ref="console"/>
    </root>
</configuration>

xml的關(guān)鍵在于logstash的appender割疾,和root節(jié)點使用哪一個appender

<!-- 如果需要使用application.yml配置logstash的服務器地址,則使用如下方式配置 -->
<springProperty scope="context" name="logstashSrvAddr" source="logstash.server.addr" defaultValue="default"/>

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  <!-- logstash的服務器地址和通信端口 -->
  <destination>${logstashSrvAddr}</destination>
  <!-- encoder is required -->
  <encoder class="net.logstash.logback.encoder.LogstashEncoder">
    <!-- 在elasticsearch的index中追加applicationName字段  -->
    <customFields>{"applicationName":"${applicationName}"}</customFields>
  </encoder>
</appender>

4.關(guān)鍵配置信息已經(jīng)全部配置完成嘉栓,接下來編寫一個controller測試一下

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

/**
 * @author Torture
 * @description 測試elk
 */
@RestController
@Slf4j
public class LogController {

    @GetMapping("/log")
    public void log(){
        //使用lombok的@Slf4j注解之后宏榕,可以直接使用下面方式直接打印日志,無須使用工廠獲得logger對象
        log.info("springboot + elk 日志測試......");
    }
}

5.啟動springboot

啟動springboot2.png

6.配置一下kibana的索引模式

配置過程:


kibana創(chuàng)建索引模式1.png
kibana創(chuàng)建索引模式2.png
kibana創(chuàng)建索引模式3.png

7.使用postman進行日志測試

info日志請求.png

idea控制臺輸出結(jié)果:


idea控制臺輸出info日志.png

在kibana中我們可以發(fā)現(xiàn)侵佃,日志已經(jīng)成功展示出來了麻昼!


logstash查看日志列表.png

下面我們再測試一下error日志下,logstash是怎么展示的馋辈!

測試類:

import com.zxj.qdzc.common.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Torture
 * @description 測試elk
 */
@RestController
@Slf4j
public class LogController {

    @GetMapping("/errorLog")
    public void log(){
        Exception e = new ServiceException("springboot + elk 錯誤日志測試......");
        log.error(e.getMessage(),e);
    }
}

使用postman請求error日志:


請求error日志.png

idea控制臺輸出結(jié)果:


idea控制臺error日志輸出.png

kibana展示error日志:


logstash error日志展示.png

展開詳情看看抚芦,發(fā)現(xiàn)連錯誤日志的堆棧信息都打印出來了,妙奥趺叉抡!


logstash error日志詳情.png

8.最后我們再來使用kibana篩選一下日志級別

點擊添加篩選按鈕:


logstash日志條件篩選.png

我們來篩選一下error日志:


logstash日志條件篩選2.png

篩選結(jié)果:


logstash日志篩選結(jié)果展示.png

至此,springboot 整合 elk的教程完結(jié)撒花答毫!

轉(zhuǎn)載請說明出處褥民!
上一篇:springboot + elk第三篇:docker部署logstash

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市洗搂,隨后出現(xiàn)的幾起案子消返,更是在濱河造成了極大的恐慌,老刑警劉巖耘拇,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撵颊,死亡現(xiàn)場離奇詭異,居然都是意外死亡惫叛,警方通過查閱死者的電腦和手機倡勇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘉涌,“玉大人妻熊,你說我怎么就攤上這事÷逍模” “怎么了固耘?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵题篷,是天一觀的道長词身。 經(jīng)常有香客問我,道長番枚,這世上最難降的妖魔是什么法严? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任损敷,我火速辦了婚禮,結(jié)果婚禮上深啤,老公的妹妹穿的比我還像新娘拗馒。我一直安慰自己,他們只是感情好溯街,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布诱桂。 她就那樣靜靜地躺著,像睡著了一般呈昔。 火紅的嫁衣襯著肌膚如雪挥等。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天堤尾,我揣著相機與錄音肝劲,去河邊找鬼。 笑死郭宝,一個胖子當著我的面吹牛辞槐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粘室,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼榄檬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了育特?” 一聲冷哼從身側(cè)響起丙号,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缰冤,沒想到半個月后犬缨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡棉浸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年怀薛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迷郑。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡枝恋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗡害,到底是詐尸還是另有隱情焚碌,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布霸妹,位于F島的核電站十电,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鹃骂,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一台盯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畏线,春花似錦静盅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚣常,卻和暖如春栈虚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背史隆。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工魂务, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泌射。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓粘姜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熔酷。 傳聞我的和親對象是個殘疾皇子孤紧,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容