Elastic Search+LogStash+logback收集springboot運行日誌

部署Elastic Search和LogStash的過程不再說明,請先部署好。

使用logback-spring.xml輸出日誌:這裏只寫使用,具體的細節可以百度

  • application.yml
logging:
  # 指定logback-spring的位置,可以掛載項目外面的配置文件(方便修改)
  config: classpath:log/logback-spring.xml
  # 指定項目日誌的輸出路徑,這裏指定的是目錄級別,具體的文件名在logback-spring.xml配置
  path: D:/data/logs
  # 輸出日誌級別
  level:
    root: info
  • logback-spring.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %-38logger{36} : %msg%n</pattern>
            <!--<pattern>%d - %msg%n</pattern>-->
        </layout>
    </appender>
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %-41logger{41} : %msg%n</pattern>
        </encoder>
        <!--滾動策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路徑-->
            <fileNamePattern>${LOG_PATH}/oss.%d.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>
    <!-- 不同環境輸出不同日誌 -->
    <springProfile name="dev">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
    <springProfile name="test">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
    <springProfile name="prod">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
</configuration>

這樣就可以實現通過logback-spring.xml指定輸出日誌格式,按天劃分日誌文件。

LogStash收集日誌文件

  • 添加pom依賴
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>4.10</version>
        </dependency>
  • logback-spring.xml添加規則:日誌向logstash服務器輸出一份
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--  這是是logstash服務器地址,端口隨意,和之後logstash的配置文件保持一致-->
        <destination>*.*.*.*:4567</destination>
        <!--輸出的格式,推薦使用這個-->
         
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <providers>
                <timestamp/>
                <version/>
                <message/>
                <loggerName/>
                <threadName/>
                <logLevel/>
                <callerData/>
            </providers>
        </encoder>
    </appender>

logback-spring.xml中根據每個環境是否需要收集日誌,配置引用:只有生產環境需要

<springProfile name="dev">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
    <springProfile name="test">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
        </root>
    </springProfile>
    <springProfile name="prod">
        <!-- 打印 日誌級別 -->
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
            <!-- 需要採集日誌到logstash -->
            <appender-ref ref="LOGSTASH"/>
        </root>
    </springProfile>
  • 配置logstash的配置文件
    • 在LogStash的安裝目錄下,新增一個配置文件,例:boot_log.conf(也可以配置filter添加解析規則)
input {
  tcp {
    port => 4567
    codec => json_lines
  }

}

output {
    elasticsearch {
        hosts => ["*.*.*.*:9200"]
        action=>"index"
        #ES索引名稱(自己定義的)
        #index => "%{[appname]}-%{+YYYY.MM.dd}"
        index => "boot"
    }
    stdout{
       codec => json_lines
    }
}

查看結果

  • 運行logstash
bin/logstash -f boot_log.conf
  • 啓動springboot項目,就能看到ES中出現boot的index,刷新查看條數在不斷新增,這是啓動日誌已經進入了ES

laolvbig

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章