amqp appender и log4j2
Я пытаюсь использовать amqpappender из весеннего проекта amqp в нашем проекте. Смотрите здесь:
http://docs.spring.io/spring-amqp/api/org/springframework/amqp/rabbit/log4j/AmqpAppender.html
Но в настоящее время мы используем log4j2, который, я думаю, не поддерживает amqp appender.
Кто-нибудь знает, работает ли amqp appender с log4j2?
3 ответа
Вы можете использовать Spring AMQP v.1.6.0.M1 (или hight) и конфигурацию log4j2 xml.
Пример приложения:
<RabbitMQ name="rabbitmq"
host="localhost" port="5672" user="guest" password="guest" virtualHost="/"
exchange="log4j2Test" exchangeType="fanout" declareExchange="true" durable="true" autoDelete="false"
applicationId="testAppId" routingKeyPattern="%X{applicationId}.%c.%p"
contentType="text/plain" contentEncoding="UTF-8" generateId="true" deliveryMode="NON_PERSISTENT"
charset="UTF-8"
senderPoolSize="3" maxSenderRetries="5">
</RabbitMQ>
Как отметил @Illiahat, вы должны использовать последнюю (еще не выпущенную) версию, такую как 1.6.0.M2
, Текущая версия (1.5.5
) не поддерживает log4j2, поэтому вы получите RabbitMQ is not recognizable
сообщение (оно не может использовать AppenderSkeleton
учебный класс).
Вот пример конфигурации gradle, которая заставит регистратор работать:
repositories {
mavenCentral()
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.5'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.5'
compile 'org.springframework.amqp:spring-rabbit:1.6.0.M2'
}
Для регистратора вы можете использовать конфигурацию из @Illiahat.
Если вы используете Log4j 2, вы должны иметь возможность обратиться к провайдеру AMQP JMS.
Например, Apache Qpid JMS является полным клиентом AMQP 1.0 Java Message Service 1.1, созданным с использованием Qpid Proton.
Qpid также предоставляет альтернативный клиент JMS, поддерживающий более ранние версии AMQP.