2015-06-30 4 views
6

Ich versuche Apache Storm zu starten, indem ich example code starte. Ich arbeite mit Sturm 0.10.1-Beta1 von einem Maven-Repository.LocalCluster deaktivieren Einloggen bei Apache Storm

Leider, wenn ich diese ausführen, ist die Konsole mit Info-Level-Logs überschwemmt, ertränkt alle System.out.print() Anrufe, die ich hinzugefügt habe. Ist es möglich, den Log-Level zu ändern, wenn ein LocalCluster ausgeführt wird? Ich habe die aufgelisteten Lösungen here versucht, und keine der Lösungen scheint zu arbeiten.

Aus dem Link, Ändern die Config.TOPOLOGY_DEBUG Eigenschaft auf false wird die Info-Ebene Protokolle nicht entfernen, und mit dem Code aus dem Link, kann ich auch nicht logger.setLevel((Level) Level.FATAL) benutzen, wie ich „Die Methode setLevel (Stufe) ist nicht definiert erhalten für den Typ Logger "obwohl er eindeutig in der log4j api aufgelistet ist.

Edit 1: Ich habe auch versucht, die Lösung here und ich habe eine XML-logback.xml in ./src mit folgenden Config genannt:

<configuration monitorInterval="60"> 
    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
    <PatternLayout pattern="%-4r [%t] %-5p %c{1.} - %msg%n"/> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Logger name="org.apache.zookeeper" level="WARN"/> 
    <Root level="WARN"> 
     <AppenderRef ref="Console"/> 
    </Root> 
    </Loggers> 
</configuration> 

Noch kein Glück aber. Gibt es eine zusätzliche Konfiguration, die erforderlich ist, um Storm mitzuteilen, dass die benutzerdefinierten Protokolleinstellungen verwendet werden sollen?

Update: Es stellt sich heraus, dass storm 0.10.x log4j2 anstelle von Logback verwendet hat, so dass das Hinzufügen einer log4j2.xml mit der obigen Konfiguration endlich funktioniert!

+0

siehe hier: https://Stackoverflow.com/questions/30923617/how-to-implement-log-changes-in-a-storm-project-locally-using-eclipse/ –

+0

Ich habe es nur versucht und kein Glück (siehe Bearbeiten). – gears88

Antwort

1

Die folgende Konfiguration funktioniert für mich:

<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="WARN"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 
+2

So stellt sich heraus, dass storm 0.10.x [wechselte zu log4j2] (https://storm.apache.org/2015/06/15/storm0100-beta-released.html) weshalb die logback.xml-Datei nicht ' t arbeiten. Das Erstellen einer log4j2.xml in ./src hat jedoch funktioniert. Ich habe deine Konfiguration mit Storm 0.9.1-Inkubation getestet und es hat perfekt funktioniert. Danke für die Hilfe! – gears88

+1

Gute für die Zukunft zu wissen :) –

+0

Ich habe versucht, ein 'log4j2.xml' mit dem obigen Inhalt hielt in src Ordnern meines Programms, aber die' INFO' und 'DEBUG' Protokolle des lokalen Clusters weiterhin angezeigt werden.Könnten Sie für einen Neuling wie mich bitte näher angeben, wo die Datei aufbewahrt werden soll und wie 'Storm' das Vorhandensein der 'log4j2.xml'-Datei in einem' Netbeans'-Projektordner erkennen würde? Ich benutze 'Gradle', um das' Storm'-Glas zu bekommen. – Nav

1

Um es für Anfänger klar zu machen:
Wenn auf lokaler Cluster ausgeführt: Ob Sie log4j oder slf4j für die eigene Anwendung Protokollierung verwenden, werden Sie schließlich haben Verwenden Sie eine log4j2.xml oder logback.xml Datei where you set die Konfiguration, wie Sie protokollieren möchten.

Es ist in dieser Datei; Log4j oder logback XML-Datei Ihrer eigenen Anwendung, die Sie die Konfiguration einfügen müssen, die Ihrer Anwendung sagt, die Protokolle nicht anzuzeigen.

Also einfach hinzufügen, das irgendwo zwischen den <configuration> und </configuration> Tags.

<logger name="org.apache.storm" level="OFF"/> 
<logger name="org.apache.zookeeper" level="OFF"/> 
+0

In 'log4j2.xml' sollte dieser Teil nicht" irgendwo "sein; Es sollte in der '' sein. – FaithReaper

1

Um eine Systemeigenschaft -Dlog4j.configurationFile=log4j2.xml ist ein Schlüsselpunkt auf Sturm 1.0.0

The log4j2.xml könnte eine Fälschung sein oder nicht vorhandene Datei zu definieren.

+0

Nein. Storm durchsucht nur die Datei 'log4j2.xml' unter Classpath. Wenn es ein Maven-Projekt ist, können Sie es unter 'src/main/resources' ablegen, was funktioniert, weil ich es so benutze. Es ist Maven-Konvention, 'src/main/java' und' src/main/resources' direkt unter Klassenpfad einzubeziehen. In Eclipse müssen Sie möglicherweise den Klassenpfad konfigurieren (entfernen Sie 'src' und fügen Sie diese beiden Ordner hinzu). – FaithReaper

Verwandte Themen