搭建elk请见我的另一篇博客
一、加入下面依赖包:
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.1</version> </dependency>
二、在logback-spring.xml中加入下面配置
<appender name="LOGSTASH"class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>192.168.94.151:4567</destination> <!--<filterclass="ch.qos.logback.classic.filter.ThresholdFilter">--> <!--<level>info</level><!–写入logstash的日志级别–>--> <!--</filter>--> <encoder charset="UTF-8"class="net.logstash.logback.encoder.LogstashEncoder" > <!--"appname":"springboot21-log-elk" 的作用是指定创建索引的名字时用,并且在生成的文档中会多了这个字段 在logstashindex中引入 index => "%{[appname]}-%{+YYYY.MM.dd}"--> <customFields>{"appname":"springboot21-log-elk"}</customFields> </encoder> </appender>
三、logstash配置文件修改成下面格式:
input输入改成tcp,host和port为springboot项目中配置的地址。
input { tcp { ##host:port就是上面appender中的destination,这里其实把logstash作为服务,开启9601端口接收logback发出的消息 host => "192.168.94.151" port => 4567 #模式选择为server mode => "server" tags => ["tags"] ##格式json codec => json_lines } } output { elasticsearch { #ES地址 hosts =>"192.168.94.151:9200" #指定索引名字,不适用默认的,用来区分各个项目 index =>"%{[appname]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug} }
四、写一个定时任务一直执行输出日志
/** * xuhaixing * 2018/5/25 13:43 */ @Component public class logTest { private Logger logger = LoggerFactory.getLogger(logTest.class); @Scheduled(fixedRate = 10000) public void logtest(){ logger.trace("日志trace"); logger.debug("日志debug"); logger.info("日志info"); logger.warn("日志warn"); logger.error("日志error"); } }
五、打开kibana
192.168.94.151:5601,创建箭头所指的索引,日志输出了