我的项目要求将日志发送到集中式位置(Graylog)服务器。因此,我考虑使用logback.xml中的“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服务器上找到日志。我可以看到在“概述”选项卡中建立的连接,但我不知道必须在哪个队列中查找消息。我漏掉了什么吗?
如果我错过了提供一些细节,那么请让我知道,我会尽快更新的帖子。
谢谢。
发布于 2016-06-06 12:52:58
您将发布到具有相当复杂的路由密钥的直接交换。
您需要将队列绑定到每个可能的路由密钥(包括应用程序id、日志类名和日志严重性)。
如果您想使用直接交换,我建议使用一个简单的路由密钥,并使用该密钥绑定一个队列。
最好将其发布到主题交换,然后可以将队列与模式绑定,以决定您想要的日志条目。
请参阅兔教程以了解不同的交换类型。
https://stackoverflow.com/questions/37650684
复制相似问题