在此博客“Ubuntu16 ELK+Filebeat日誌管理平臺搭建-筆記”基礎上繼續深入學習;
- 首先配置logstash-6.5.4中的logstash.conf文件
input { tcp { port=> 8065 codec => "json" } } output { elasticsearch { hosts => "129.0.0.1:9200" index => "%{[appname]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug { } } }
-
啓動logstash
#啓動logstash ./bin/logstash -f logstash.conf &
-
配置簡單的spring-boot
-
在pom文件中添加依賴
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency>
-
配置logback-spring.xml
-
3. logback-spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
%msg%n</pattern>
</encoder>
</appender>
<!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑 -->
<property name="LOG_HOME" value="/home" />
<appender name="eventFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover 保存歷史記錄到這個文件夾一日起爲後綴 -->
<FileNamePattern>${LOG_HOME}/log/%d{yyyy-MM-dd}.log</FileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
%msg %n</Pattern>
<charset>UTF-8</charset> <!-- 此處設置字符集 -->
</encoder>
</appender>
<appender name="LOGSTASH"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:8065</destination>
<!-- encoder必須配置,有多種可選 -->
<encoder charset="UTF-8"
class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"guilin"}</customFields>
</encoder>
</appender>
<springProfile name="dev">
<!-- 打印 日誌級別 -->
<root level="info">
<appender-ref ref="eventFile" />
<appender-ref ref="STDOUT" />
</root>
</springProfile>
<springProfile name="prod">
<!-- 打印 日誌級別 -->
<root level="info">
<appender-ref ref="eventFile" />
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGSTASH" />
</root>
</springProfile>
</configuration>
注意:
****配置該項<springProfile name="dev">,則可以在application.yml中配置線上與線下環境日誌的輸出;
dev本地運行,不傳輸日誌到logstash;
prod線上環境,實時傳輸日誌到logstash;
****配置<customFields>{"appname":"test"}</customFields>,則會在logstash.conf中對數據json化,讀取字段appname,在kibana界面的index pattern處會以該名稱顯示。則可以配置不同項目的appname,達到對多個項目的日誌進行查找;
4. application.yml配置如下啓動項目
spring:
profiles:
active:
- prod
5. 在kibana界面的management