amqp-appender没有收到消息

时间:2014-11-14 22:39:01

标签: logging spring-amqp

我有一个简单的测试应用程序,使用AmqpAppender记录消息。 当我运行我的应用程序时,我可以看到基于控制台的消息被写出来,但AMQP却没有。更让我感到担心的是,我根本没有看到appender的任何输出表明它可能有问题。我已经测试了无效的交换名称,以及关闭了rabbitmq服务器(测试我的本地盒子),但没有任何东西出现。

当它无法找到appender的主机时,我不应该至少在System.err中出错吗?

我正在使用WebApplicationInitializer初始化我的webapp,但我没有为Rabbit定义任何其他spring-beans,因为目前只有记录器正在使用它。

这是我的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 个答案:

答案 0 :(得分:1)

如果您确定要选择正确的log4j.xml(使用-Dlog4j.debug=true),那么您可能不会等待足够长的时间。重试以指数方式退出;如果最大重试次数为30,则记录错误需要几分钟(最后一次重试等待30秒,最后一次重试等等)等等。减少重试次数,您应该看到:

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