首先配置logstash-6.5.4中的logstash.conf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| input { tcp { port=> 8065 codec => "json" } }
output { elasticsearch { hosts => "129.0.0.1:9200" index => "%{[appname]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug { } } }
|

启动logstash
1 2
| ./bin/logstash -f logstash.conf &
|

配置简单的spring-boot
在pom文件中添加依赖
1 2 3 4 5
| <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency>
|

- 配置logback-spring.xml
)
\3. logback-spring.xml配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <?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>
|

注意:
****配置该项,则可以在application.yml中配置线上与线下环境日志的输出;
dev本地运行,不传输日志到logstash;
prod线上环境,实时传输日志到logstash;
****配置{“appname”:”test”},则会在logstash.conf中对数据json化,读取字段appname,在kibana界面的index pattern处会以该名称显示。则可以配置不同项目的appname,达到对多个项目的日志进行查找;
\4. application.yml配置如下启动项目
1 2 3 4
| spring: profiles: active: - prod
|

\5. 在kibana界面的management
)