2016-04-13 6 views
0

Ich habe ein einfaches Java Projekt erstellt. Ich versuche, die Protokollierung mit Logstash und RabbitMQ zu zentralisieren. Aber zuerst muss ich meine Protokolle mit RabbitMQ mit AmqpAppender zentralisieren. Aber es funktioniert nichtSpring AmqpAppender LOG4J funktioniert nicht

Meine Konfigurationen:

  • Pom Abhängigkeiten:

    <dependency> 
         <groupId>org.springframework.amqp</groupId> 
         <artifactId>spring-rabbit</artifactId> 
         <version>1.0.0.RELEASE</version> 
    </dependency> 
    
  • log4j.xml Eigenschaften

    <appender name="amqp" class="org.springframework.amqp.rabbit.log4j.AmqpAppender"> 
        <param name="ExchangeName" value="amq.rabbitmq.log" /> 
        <param name="ExchangeType" value="topic" /> 
        <param name="RoutingKeyPattern" value="logstash" /> 
        <param name="ApplicationId" value="logstash" /> 
        <layout class="org.apache.log4j.PatternLayout"> 
         <param name="ConversionPattern" value="%d{ISO8601} %-5p %m%n" /> 
        </layout> 
    </appender> 
    
    <root> 
        <level value="INFO" /> 
        <appender-ref ref="amqp" /> 
        <appender-ref ref="default.file" /> 
    </root> 
    

Meine rabbitmq config:

Ich habe eine Austausch: amq.rabbitmq.log mit einem in eine Warteschlange Bindung: 'LOG' mit Schlüssel Routing: logstash

Aber als ich Versuchen Sie, etwas einzuloggen, der AMQP Appender funktioniert nicht. Mein RollingFileAppender arbeitet mit dieser Config fein:

<appender name="amqp" class="org.springframework.amqp.rabbit.log4j.AmqpAppender"> 
    <param name="ExchangeName" value="test.logs" /> 
    <param name="ExchangeType" value="topic" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} %-5p %m%n" /> 
    </layout> 
</appender> 

EDIT:

Einige Bilder:

Austausch: test.logs

Ich bin mit dem 'test.logs' Austausch

Warteschlangenbindung: LOG queue

Antwort

0

"NOT WORKING" ist nicht viel Hilfe - haben Sie versucht, die Debug-Protokollierung für org.springframework.amqp zu aktivieren?

Haben Sie eine Warteschlange an amq.rabbitmq.log gebunden?

Welcher Routing-Schlüssel?

BTW, dieser Austausch ist für die interne Rabbitmq-Protokollierung für den Abruf gedacht, nicht für die Benutzerprotokollierung. In der Tat, die Admin-Benutzeroberfläche hat nicht einmal einen "Nachricht veröffentlichen" -Dialog auf the exchange, so dass ich vermute, dass Sie nicht aus einer externen Quelle veröffentlichen können.

I gebunden ist nur eine Warteschlange, um es sehen und Nachrichten wie:

accepting AMQP connection <0.7744.183> (127.0.0.1:65004 -> 127.0.0.1:5672) 

(d.h. broker logs).

Erstellen Sie Ihren eigenen Exchange und binden Sie eine Warteschlange an ihn.

+0

Ich habe den Austausch und die Warteschlange geändert (siehe Links/Bilder). Immer noch passiert nichts –

+0

seit 'test.logs 'ist ein 'topic'-Austausch, Sie müssen mit einem Routing-Schlüssel binden (' # 'für alle Nachrichten oder' logstash' von Ihrer Konfiguration); oder ändern Sie den Exchange-Typ zu 'Fanout', der keinen Routing-Schlüssel benötigt. In den Rabbitmq-Tutorials finden Sie Informationen zu den Exchange-Typen und den Routing-Schlüsselanforderungen. –