2014-11-14 91 views
0

我有一個簡單的測試應用程序使用AmqpAppender來記錄消息。 當我運行我的應用程序時,我可以看到基於控制檯的消息被寫出,但AMQP沒有。更關注我的是,我根本沒有看到appender的任何輸出來表明它可能有問題。我已經用無效的交換名稱進行了測試,以及關閉了rabbitmq服務器(對本地盒子進行測試),但沒有任何顯示。amqp-appender沒有收到消息

當它無法找到appender的主機時,我不應該至少在System.err中出現錯誤嗎?

我正在使用WebApplicationInitializer對我的webapp進行初始化,但我沒有爲Rabbit定義任何其他spring-bean,因爲目前只有記錄器正在使用它。

這裏是我的log4j.xml

<?xml version="1.0" encoding="UTF-8" ?> 

<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n" /> 
    </layout> 
</appender> 

<!-- Complete Logger --> 
<appender name="amqp" class="org.springframework.amqp.rabbit.log4j.AmqpAppender"> 
    <param name="host" value="www.yousuck.io" /> 
    <param name="port" value="5672" /> 
    <param name="virtualHost" value="platform" /> 
    <param name="username" value="username" /> 
    <param name="password" value="password" /> 
    <param name="exchangeName" value="testExchange" /> 
    <param name="exchangeType" value="topic" /> 
    <param name="routingKeyPattern" value="test" /> 
    <param name="applicationId" value="ErrorsAppenderTest" /> 
    <param name="declareExchange" value="true" /> 
    <param name="durable" value="true" /> 
    <param name="contentType" value="text/plain" /> 
    <param name="senderPoolSize" value="2" /> 
    <param name="maxSenderRetries" value="30" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n" /> 
    </layout> 
</appender> 

<root> 
    <!-- <level value="debug" /> --> 
    <priority value="debug" /> 
    <appender-ref ref="amqp" /> 
    <appender-ref ref="console" /> 
</root> 

</log4j:configuration> 

缺少什麼我在這裏,是造成這甚至沒有初始化。

回答

1

如果您確定要選擇正確的log4j.xml(使用-Dlog4j.debug=true),那麼您可能沒有足夠長的時間。重試成倍地得到了回退;最大重試次數爲30,在記錄錯誤之前需要幾分鐘時間(最後一次重試等待30秒,接下來是最後29次等)。減少重試次數,你應該看到:

log4j:ERROR Could not send log message This is an INFO message with properties after 1 retries 
org.springframework.amqp.AmqpIOException: java.net.UnknownHostException: junk 

(這來自我們的一個測試用例,主機名不好)。

有些錯誤(如此)應該可能被認爲是致命的而不是重試;隨時打開一個JIRA 'Improvement' Issue

+0

我忘記了使用log4j jn jboss的怪癖,它使用了哪個log4j。 – jesmith17 2014-11-20 03:05:34