一、pom.xml添加配置
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<optional>true</optional>
</dependency>
<!--用户logback Filter动态编译,分离行为日志-->
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.12</version>
</dependency>
二、appender配置
<appender name="AMQP" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
<!--<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!--<pattern>${AMQP_LOG_PATTERN}</pattern>-->
<!--</encoder>-->
<includeCallerData>true</includeCallerData>
<!--<encoder class="net.logstash.logback.encoder.LogstashEncoder" >-->
<!--<customFields>{"appname":"bdcor2"}</customFields>-->
<!--<includeMdcKeyName>user.uuid</includeMdcKeyName>-->
<!--<includeCallerData>true</includeCallerData>-->
<!--<includeContext>false</includeContext>-->
<!--</encoder>-->
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder" >
<providers>
<timestamp/>
<pattern>
<pattern>
{
"env":"${SPRING_PROFILES_ACTIVE}",
"appName":"${SPRING_APPLICATION_NAME}",
"logType":"behavior",
"logger": "%logger",
"level": "%level",
"thread": "%thread",
"message": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
<host>${LOGBACK_APPENDER_AMQP_HOST}</host>
<port>${LOGBACK_APPENDER_AMQP_PORT}</port>
<username>${LOGBACK_APPENDER_AMQP_USERNAME}</username>
<password>${LOGBACK_APPENDER_AMQP_PASSWORD}</password>
<applicationId>${LOGBACK_APPENDER_AMQP_APPLICATION_ID}</applicationId>
<routingKeyPattern>${LOGBACK_APPENDER_AMQP_ROUTING_KEY_PATTERN}</routingKeyPattern>
<declareExchange>${LOGBACK_APPENDER_AMQP_DECLARE_EXCHANGE}</declareExchange>
<exchangeType>${LOGBACK_APPENDER_AMQP_EXCHANGE_TYPE}</exchangeType>
<exchangeName>${LOGBACK_APPENDER_AMQP_EXCHANGE_NAME}</exchangeName>
<generateId>${LOGBACK_APPENDER_AMQP_GENERATE_ID}</generateId>
<charset>UTF-8</charset>
<durable>${LOGBACK_APPENDER_AMQP_DURABLE}</durable>
<deliveryMode>${LOGBACK_APPENDER_AMQP_DELIVERY_MODE}</deliveryMode>
<virtualHost>${LOGBACK_APPENDER_AMQP_VIRTUAL_HOST}</virtualHost>
</appender>
三、logstash.conf配置
input {
rabbitmq {
type =>"all"
durable => false
exchange => "claves-log"
exchange_type => "topic"
queue => "claves-log-logstash"
key => "claves-demo-app"
host => "127.0.0.1"
port => 5672
user => "admin"
password => "admin"
auto_delete => false
codec => json
}
}
output {
elasticsearch {
hosts => ["192.168.1.1:18080"]
index => "%{appName}-%{env}-%{logType}"
}
}