配置 RabbitMq logback appender 时遇到问题

trouble configuring RabbitMq logback appender

我的项目要求在集中位置 (Graylog) 服务器发送日志。 所以我想在 logback.xml 中使用 "AMQP Appender" 将日志发送到 RabbitMq,然后配置 Graylog 服务器以从 RabbitMq 获取日志。

这就是我的 logback.xml 的样子。

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

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                {
                "time": "%date{ISO8601}",
                "thread": "%thread",
                "level": "%level",
                "class": "%logger{36}",
                "message": "%message"
                }
            </pattern>      </encoder>
    </appender>

  <appender name="RabbitMq" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
        <layout>
            <pattern>
                {
                "time": "%date{ISO8601}",
                "thread": "%thread",
                "level": "%level",
                "class": "%logger{36}",
                "message": "%message"
                }
            </pattern>  
        </layout>
        <host>localhost:8080</host>
        <port>5672</port>
        <username>guest</username>
        <password>guest</password>
        <exchangeType>direct</exchangeType>
        <exchangeName>amq.direct</exchangeName>
        <applicationId>RabbitMq-IT-SE</applicationId>
     <routingKeyPattern>%property{applicationId}.%c.%p</routingKeyPattern>
        <generateId>true</generateId>
        <charset>UTF-8</charset>
        <durable>true</durable>
        <abbreviation>36</abbreviation>
        <deliveryMode>NON_PERSISTENT</deliveryMode>
        <declareExchange>true</declareExchange>

    </appender> 



    <logger name="org.springframework.amqp.rabbit.logback" level="INFO" additivity="true">
        <appender-ref ref="RabbitMq"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="RabbitMq"/>
    </root>

</configuration>

我可以在控制台中看到日志,我也希望在 RabbitMq 服务器上看到它们。 但不知何故,我无法在 RabbitMq Server 上找到日志。 我可以在 "Overview" 选项卡中看到建立的连接,但我不知道我必须在哪个队列中查找消息。 我错过了什么吗?

如果我没有提供一些细节,请告诉我,我会尽快更新post。

谢谢。

您正在使用相当复杂的路由密钥发布到直接交换。

您需要将队列与每个可能的路由键(包括应用 ID、日志 class 名称和日志严重性)绑定。

如果您想使用直接交换,我会建议使用一个简单的路由密钥并使用该密钥绑定一个队列。

最好发布到主题交换器,然后你可以用模式绑定队列来决定你想要哪些日志条目。

请参阅 rabbitmq tutorials 以了解不同的交换类型。