【问题标题】:trouble configuring RabbitMq logback appender配置 RabbitMq logback appender 时遇到问题
【发布时间】:2016-06-06 06:17:49
【问题描述】:

我的项目要求将日志发送到集中位置(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 服务器上找到日志。 我可以看到在“概述”选项卡中建立的连接,但我不知道我必须在哪个队列中查找消息。 我错过了什么吗?

如果我错过了提供一些细节,请告诉我,我会尽快更新帖子。

谢谢。

【问题讨论】:

  • AMQP 交换就像电话交换一样,不接收数据而是路由数据。您需要创建一个队列并将该队列与您正在使用的交换相关联。在此队列中,您可以看到消息。 Graylog 服务器可以连接到该队列以接收消息。

标签: spring spring-boot rabbitmq amqp spring-amqp


【解决方案1】:

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

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

如果您想使用直接交换,我建议使用简单的路由键并将单个队列与该键绑定。

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

查看rabbitmq tutorials了解不同的交换类型。

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多