堅持學(xué)習(xí)第二天:SpringBoot 2.x 整合Logstash記錄JSON格式日志

  • 認真是一種態(tài)度,堅持是一種品格,優(yōu)秀是一種習(xí)慣!
    ????都說選擇難,其實堅持才難。趁著知識點還是熱的,過來記錄一波。為方便ELK日志收集和數(shù)據(jù)分析需要將日志修改為記錄JSON格式。為此有了今天這個筆記,記錄一波,方便自己后面好查。

一、基礎(chǔ)知識

沒有去百度,所以下次補全Logback及Logstash相關(guān)基礎(chǔ)概念,如有想法自行百度一下

二、項目導(dǎo)包與配置

2.1 基礎(chǔ)框架

SpringBoot 2.0.6、JDK 1.8、logback 1.2.3、logstash-logback-encoder 5.3

2.2 maven pom引包

       <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.3</version>
        </dependency>

2.3 添加logback.xml配置


<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <property name="LOG_HOME" value="./logs" />
   <!-- 根據(jù)需要自行配置 -->
    <property name="APP_NAME" value="app_name" />
    <!-- 控制臺輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <!-- 日志輸出級別 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>

2.4 JSON格式日志輸出效果:

{"@timestamp":"2019-05-23T22:26:33.447+08:00","@version":"1","message":"Mapped \"{[/actuator],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}\" onto protected java.util.Map<java.lang.String, java.util.Map<java.lang.String, org.springframework.boot.actuate.endpoint.web.Link>> org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)","logger_name":"org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2019-05-23T22:26:33.620+08:00","@version":"1","message":"Registering beans for JMX exposure on startup","logger_name":"org.springframework.jmx.export.annotation.AnnotationMBeanExporter","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2019-05-23T22:26:33.622+08:00","@version":"1","message":"Bean with name 'dataSource' has been autodetected for JMX exposure","logger_name":"org.springframework.jmx.export.annotation.AnnotationMBeanExporter","thread_name":"main","level":"INFO","level_value":20000}
{"@timestamp":"2019-05-23T22:26:33.631+08:00","@version":"1","message":"Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]","logger_name":"org.springframework.jmx.export.annotation.AnnotationMBeanExporter","thread_name":"main","level":"INFO","level_value":20000}

2.5 直接輸出到Logstash

以上為輸出到文件的Logstash配置方式,當然也只支持直接輸出到Logstash,如下配置:


<appender name="TCP_LOGSTASH"  class="net.logstash.logback.appender.LogstashTcpSocketAppender">
         <destination>IP地址:端口號</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${APP_NAME}--info-%d{yyyy-MM-dd}.log</fileNamePattern>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                 <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </rollingPolicy>
    </appender>

這里就不講Logstash安裝和使用(我也不是那么熟<_>?。蓞⒖?a target="_blank">官網(wǎng),附上下載地址,Logstash的使用可參考Logstash 最佳實踐

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容