Logback通过rabbitmq发送日志到Logstash
前言
这篇主要是记录自己整合的过程,其中有参考其他博文,侵删。
创建rabbit-log.conf
进入docker
[root@localhost /]# docker exec -it elk /bin/bash
搭建elk链接: Docker部署ELK
创建rabbit-log.conf
[root@localhost /]# vim /opt/logstash/config/rabbit-log.conf
编写内容
input {
rabbitmq{
host=>"127.0.0.1" # 这里填写Rabbitmq的地址,确保可以ping通
port=> 15672 # 这里填写Rabbitmq的端口
user=>"guest" # 这里填写Rabbitmq的用户名
password=>"guest" # 这里填写Rabbitmq的密码
exchange => "LOG-EXCHANGE" # 这里填写Rabbitmq的交换机的名称
key => "LOG" #路由键
queue=>"LOG-QUEUE" # 这里填写Rabbitmq的队列的名称
durable=> true # 这里填写Rabbitmq的队列的durable属性
codec=>json # 这里填写Rabbitmq的队列的内容是什么格式
}
}
filter {
}
output {
elasticsearch {
hosts => ["localhost:9200"] # ElasticSearch的地址加端口
index => "%{client}-%{+YYYYMMdd}" # ElasticSearch的保存文档的index名称,client是各个模块的应用名,用于区别索引
}
}
重启logstash
[root@localhost /]# service logstash restart
创建logback.xml
引入jar包
<!--用于logback的if标签-->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.2</version>
</dependency>
<!--mq-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
编写logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
<!-- 读取application.yml中的属性 -->
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<springProperty scope="context" name="active" source="spring.profiles.active"/>
<!--<!– 因为rabbitmq的配置没有第一时间读取到,所以不走配置文件 –>
<springProperty scope="context" name="rabbitmqHost" source="spring.rabbitmq.host"/>
<springProperty scope="context" name="port" source="spring.rabbitmq.port"/>
<springProperty scope="context" name="username" source="spring.rabbitmq.username"/>
<springProperty scope="context" name="password" source="spring.rabbitmq.password"/>-->
<!-- 定义日志文件 输入位置 -->
<property name="log_dir" value="/home/log" />
<!-- 日志最大的历史 30天 -->
<property name="maxHistory" value="30"/>
<!-- 输出到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}) - %highlight(%msg) %n
</pattern>
</encoder>
</appender>
<!-- ALL级别日志 appender -->
<appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>
${log_dir}/${springAppName}/${springAppName}.%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- 日志最大的历史 30天 -->
<maxHistory>${maxHistory}</maxHistory>