实现需求:在使用logback的spring项目中,每次使用log.info,log.warn或者log.error的时候自动把这条日志的基础信息和本机相关的信息发送到logstash并且使用logstash转存给Elasticsearch。
注意:本期为基础版本,旨在能实现基础功能,所有的参数均为文件写死,若实现动态参数的话,参考下一篇:
一.引入logstash的pom依赖
<!--logback集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
二.logback-spring.xml配置
//声明appender
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
//这里设置logstash的ip地址和监听端口,不是logstash的启动服务端口,
//任意写一个就可以,但是需要logstash所在的服务器防火墙放行该端口
<destination>10.8.10.60:9999</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
</encoder>
</appender>
//在root标签中调用appender
<appender-ref ref="LOGSTASH"/>
上面的配置中,每当有调用log.xxx日志打印的时候,就会发送tcp请求到10.8.10.60的9999端口,下面我们开始配置logstash的监听配置。
三.logstash监听logback的日志发送请求
进入logstash的配置文件,配置logstash.conf文件
input {
tcp {
port => 9999
codec => json_lines
}
}
output {
stdout{
codec => json_lines
}
}
然后进入bin目录,执行./logstash -f logstash.conf即可启动logstash,每次logback打印日志之后,logstash就会将日志打印在控制台。