2017-08-07 53 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