配置 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 以了解不同的交换类型。
我的项目要求在集中位置 (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 以了解不同的交换类型。