logstash配合spring boot-logback项目实时传输日志

本文介绍如何使用Logstash、Elasticsearch和Filebeat搭建日志管理系统,包括配置Logstash接收JSON日志,Spring Boot应用通过Logstash-TCP发送日志至Logstash,并在Kibana中查看按项目名分类的日志。

       在此博客“Ubuntu16 ELK+Filebeat日志管理平台搭建-笔记”基础上继续深入学习;

  1. 首先配置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 { }
      }
    }
    

     

  2.  启动logstash

    #启动logstash    
    ./bin/logstash -f logstash.conf &

     

  3.  配置简单的spring-boot

    1.  

      在pom文件中添加依赖

       

      <dependency>
      	<groupId>net.logstash.logback</groupId>
      	<artifactId>logstash-logback-encoder</artifactId>
      	<version>4.11</version>
      </dependency>
      

       

    2. 配置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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值