2015-06-30 50 views
6

我試圖通過運行example code來開始使用Apache風暴。我正在使用Maven倉庫中的風暴0.10.1-beta1。在Apache Storm中禁用LocalCluster日誌記錄

不幸的是,當我運行這些時,控制檯充滿了信息級日誌,淹沒了我添加的任何System.out.print()調用。運行LocalCluster時是否可以更改日誌級別?我試過列出的解決方案here,而且這些解決方案似乎都沒有工作。

從鏈接中,將Config.TOPOLOGY_DEBUG屬性更改爲false不會刪除信息級別日誌,並且使用鏈接中的代碼,我甚至不能使用logger.setLevel((Level) Level.FATAL),因爲我得到「方法setLevel(Level)未定義對於Logger類型「,儘管它清楚地列在了log4j api中。

編輯1: 我也嘗試過解決方案here,我把叫logback.xml的XML轉換./src與以下配置:

<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> 

仍然沒有運氣,雖然。是否有任何額外的配置需要告訴風暴使用自定義日誌設置?

更新:事實證明,風暴0.10.x切換到使用log4j2而不是logback,所以添加log4j2.xml與上述配置終於工作!

+0

看在這裏:https://stackoverflow.com/questions/30923617/how-to-implement-log-changes-in-a-storm-project-locally-using-eclipse/ –

+0

只是試過,沒有運氣(見編輯)。 – gears88

回答

1

下面的配置爲我工作:

<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

所以事實證明,風暴0.10.x [切換到log4j2](https://storm.apache.org/2015/06/15/storm0100-beta-released.html)這就是爲什麼logback.xml文件wasn'不工作。但是,在./src中創建log4j2.xml確實有效。我用風暴0.9.1測試了你的配置 - 孵化,它的工作完美。謝謝您的幫助! – gears88

+1

提示以後參考:) –

+0

我試着在程序的src文件夾中保留一個帶有上述內容的'log4j2.xml',但本地集羣的INFO和DEBUG日誌繼續顯示。對於像我這樣的新手來說,能否請你提供更多關於文件保存位置的詳細信息以及'Storm'如何識別'Netbeans'項目文件夾中的log4j2.xml文件?我使用'Gradle'來獲得'Storm'罐子。 – Nav

1

要清楚的新手:
當本地集羣上運行:無論您使用log4jslf4j爲自己的應用程序的日誌,你最終要使用log4j2.xmllogback.xml文件where you set您希望如何記錄日誌的配置。

它在這個文件裏;你自己的應用程序的log4j或logback xml文件,你必須粘貼配置,告訴你的應用程序不要顯示日誌。

因此,只需在<configuration></configuration>標籤之間的任意位置添加此標籤即可。

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

在'log4j2.xml'中,這個部分不應該是「任何地方」;它應該在''中。 – FaithReaper

1

要定義系統屬性-Dlog4j.configurationFile=log4j2.xml是風暴1.0.0

log4j2.xml關鍵點可能是假的或不存在的文件。

+0

否.. Storm只搜索類路徑下的'log4j2.xml'文件。如果它是一個maven項目,你可以把它放在'src/main/resources'下,因爲我這樣使用它。 Maven約定在類路徑下直接包含'src/main/java'和'src/main/resources'。在Eclipse中,您可能需要配置classpath(刪除'src'並添加這兩個文件夾)。 – FaithReaper