Logback联动ELK

1.添加依赖

  在Maven项目中添加如下依赖:


	net.logstash.logback
	logstash-logback-encoder
	4.8
	runtime

2.配置Logback+Logstash

  •  如果Logback形式为logback.xml,则引入如下appender:



	10.8.120.37:4560
	


	

  •   如果Logback形式为logback-access.xml,则引入如下appender:


	10.8.120.37:4560
	


	

  • 在Logstash中添加如下配置文件:
input {
    tcp {
        port => 4560
        codec => json_lines
        mode => "server"
    }
}
output {
  stdout {
     codec => rubydebug
  }
 elasticsearch {
        hosts  => "10.8.120.37:9200"
        index => "logbt-%{+YYYY.MM.dd}"
  }
}
    此时,通过log.info()、log.error()等方式打印的日志,将会通过TCP方式发送到10.8.120.37的4560端口,然后由logstash接收到,如下所示:
Logback联动ELK_第1张图片
    如果logstash无法接收到,可将上述Logback配置中logback.xml和logback-access.xml对调配置(有时候logback配置抽风,不按GitHub上说得来)。
    目前为止,简单的Logback联动ELK已经实现了。

3.Logback自定义设置
  笔者用的appender是LogstashTcpSocketAppender,但有时LogstashTcpSocketAppender默认的配置信息不能满足我们的诉求,比如上述图片没有行号信息。这时候就需要自己设置需要的字段来让appender提供(前提是appender支持)。

3.1自定义appender提供字段
    这里不涉及开发,我们只需更改appender的格式即可,笔者的具体格式如下:

	10.8.120.37:4560
	
		
			
			
			
			
			
			
			
		
	
    在logstash中具体效果如下:
Logback联动ELK_第2张图片


3.2自定义patterns
    自定义appender patterns格式如下:

	10.8.120.37:4560
	
		
    			
     			 
        			{
        				"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}", //时间戳格式
        				"thread": "%thread", //进程名
       					"level": "%level", //日志等级
        				"logger_name": "%logger", //日志记录器名
        				"class_name": "%class", //类名
        				"method_name": "%method", //方法名
        				"line_number": "%line", //行号
        				"message": "%message" //日志主题信息
        			}
      			 
   			
  		
	


		10.8.120.37:4560
		
			
				
					
						{
						"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
						"thread": "%thread",
						"level": "%level",
						"position": "%class.%method Line:%-3L",
						"log": "%message",
						"type": "api-prd"
						}
					
				
			
		
	



    logstash中得到日志消息如下:
    Logback联动ELK_第3张图片



总结:
本文由笔者自行编写,如有错误或补充的地方,还请诸位同仁指正。
祝大家学业进步,事业有成!

作者:Smile潇洒Tel 

转载请注明出处,谢谢合作!

你可能感兴趣的:(ELK,Logback)