2017-08-07 62 views
1

我有一个关于这个问题,我要送的logback日志兔子,我用弹簧的兔子,因为我需要发送使用JSON格式的数据,所以我用LoggingEventCompositeJsonEncoder,这里是我的配置最新的春季兔子不支持编码器标签?

<appender name="AMQP" class="org.springframework.amqp.rabbit.logback.AmqpAppender"> 
    <!--<layout>--> 
    <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> 
    <!--</layout>--> 
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> 
     <pattern> 
      <pattern> 
       { "level": "%level" } 
      </pattern> 
     </pattern> 
    </encoder> 
    <host>127.0.0.1</host> 
    <port>5672</port> 
    <username>guest</username> 
    <password>guest</password> 
    <routingKeyPattern>testroute</routingKeyPattern> 
    <exchangeName>logs</exchangeName> 

    <declareExchange>true</declareExchange> 
    <generateId>true</generateId> 
    <charset>UTF-8</charset> 
    <durable>true</durable> 
    <deliveryMode>PERSISTENT</deliveryMode> 

</appender> 

但是当我启动应用程序,我得到了如下错误:

java.lang.IllegalStateException: Logback configuration error detected: ERROR in [email protected]:88 - no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]] 
ERROR in [email protected]:22 - no applicable action for [pattern], current ElementPath is [[configuration][appender][encoder][pattern]] 
ERROR in [email protected]:26 - no applicable action for [pattern], current ElementPath is [[configuration][appender][encoder][pattern][pattern]] 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:162) 
    at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:81) 
    at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:59) 
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:115) 
    at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:303) 
    at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:276) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239) 
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:212) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122) 
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:74) 
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) 
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:325) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:296) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) 
+0

您需要显示您的配置。 –

+0

@GaryRussell我已经更新了配置文件,你能帮助我吗? – maoningchuan

回答

0

这是正确的org.springframework.amqp.rabbit.logback.AmqpAppenderAppenderBase扩展,而不是它支持encoder选项的OutputStreamAppender

但是,我很确定我们可以添加对它的支持,而不是原始的msgBody.getBytes()调用已经this.encoder.encode(event)

关于此事的JIRA:https://jira.spring.io/browse/AMQP-760