2014-11-14 108 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