ELK日志收集分析系统搭建笔记之Logback篇

7 篇文章 0 订阅

logback篇

前面记录了搭建环境等步骤,完成了日志文件内容通过Logstash输出到ES,再到kibana展示等一系列步骤。这一篇文章记录了由logback.xml通过tcp通道方式发送日志到logstash,由logstash传输到ES,kibana展示。

环境配置:
	logstash,ES,kibana,搭建在云服务器上
	logback.xml配置在项目中,放置在本机上运行
	项目是一个springboot项目

1.配置logback.xml文件

首先在pom文件中导入jar包
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>

然后在properties文件中配置环境和项目名称参数,如下:
在这里插入图片描述
然后在logback.xml中导入环境和项目名称参数
在这里插入图片描述
接着建立logback发送日志到logstash的appender节点
在这里插入图片描述
destination中配置logstash的云服务地址(外网IP)和端口

<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>1.1.1.11:9600</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
logback.xml的root节点执行appender
在这里插入图片描述
到这里,logback.xml中的配置已经完成了。

2.新建与logback.xml通信脚本

在logstash云服务器上的 /etc/logstash/conf.d/下建立脚本,例如我的脚本:logbacklog.conf,内容如下:
在这里插入图片描述
仔细看脚本内容,index参数那一项,两个参数就是在logback.xml中导入的参数,索引采用:环境+项目名+日期组成。例如:dev-order:2019-03-06

input {
    tcp{
        port => 9600
        codec => json_lines
        type => "boot"
    }
}
output {
    elasticsearch {
        hosts => ["1.1.1.11:9200"]
        action => "index"
        codec => rubydebug
        index => "%{[spring_profiles_active]}-%{[spring_application_name]}:%{+YYY-MM-dd}"
        template_name => "%{[spring_application_name]}"
        user => "elastic"
        password => "changeme"
    }   
}

脚本建立好了,用命令检测一下脚本是否正常,按照上一篇搭建笔记之logstash篇步骤进行检查,如无问题。重启logstash。

3.进行日志发送

在demo项目中写一个测试方法,打印日志
在这里插入图片描述
然后启动项目,访问此方法。待结果返回出来,进入kibana,查看是否生成了索引和log日志是否记录下来了,我的日志内容如下:
在这里插入图片描述
在这里插入图片描述
备注:不知道如何查看的朋友,可以按照搭建笔记之kibana篇进行索引和日志查看。
到这里完成了我们logback.xml发送日志到logstash,logstash进行日志存储到ES,kibana展示的全过程,

4.日志精准发送

像刚才的示例方法中的日志,四个级别,info,error,debug,warn,一股脑的发送到了logstash上,在有些时候,我们只需要记录下error级别日志就够了,其他的日志完全浪费ES的空间。或者是另一种情况,指定到具体的包具体的文件中发送指定级别的日志,这种需求。这个时候我们就不能把日志不进行区分的全部发送过去了。如何精准发送?只需要修改logback.xml文件就行了,注释root中的logstash节点,新增一个logger节点
在这里插入图片描述

logger节点意思
	name 发送日志的目录,也就是只会发送com.guhui.demo.controller路径下所有文件的日志
	level 日志级别,定义日志只发送那个级别的日志,进行日志过滤
	additivity additivity的作用在于 logger是否使用 root配置的appender进行输出。就像switch的穿透一样
    	false:表示只用当前logger的appender-ref。
		true:表示当前logger的appender-ref和rootLogger的appender-ref都有效。

然后我们新建一个不同的包,包下建一个类,写一个测试方法,如图:
在这里插入图片描述
然后重启项目,分别访问两个方法,进入kibana,查看索引下的日志,发现只有controller目录的日志记录下来了,test目录的日志没有记录。
在这里插入图片描述
如果索引的日志太多了,不好查看,可以在Dev Tools 中删除索引,执行:DELETE index。index是你索引名称
在这里插入图片描述
通过logger节点,指定包,指定日志级别,发送日志,实现日志的精准发送,就完成了
demo项目,在我个人的github上,感兴趣的可以下载下来进行参考:demo项目


丶clearwater

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值