2014-09-05 86 views
7

我在使用log4j在風暴中記錄到文件時遇到了一些問題。如何使用Log4j和Storm Framework將日誌寫入文件?

之前提交我的拓撲結構,即在我的主要方法我寫的一些日誌報表和使用配置的記錄:

PropertyConfigurator.configure(myLog4jProperties) 
  • 現在,當我運行使用我的可執行的JAR在Eclipse中我的拓撲結構 - 其工作正常並且正在創建日誌文件。

    當我使用「Java的罐子MyJarFile someOtherOptions」,我可以看到配置的log4j和文件 正確形成和記錄是在這兩個文件和控制檯進行(如 在我的log4j定義的運行我的可執行的JAR的.properties)

  • 當我運行使用「風暴罐子MyJarFile MyMainClass someOtherOptions」它不能夠創建並登錄到 的任何文件,除了在控制檯上的同一個JAR。

我談論我打印的日誌之前提交我的拓撲結構。

有什麼辦法在使用風暴的時候在文件中記錄我的語句?我是不是必然使用org.apache.log4j

+0

您正在使用本地集羣作爲jar exec嗎?當您使用「storm jar ...」時,您正在使用羣集模式。那麼你是否在服務器上的storm install dir/log4j上檢查了storm.log.properties文件?當你在集羣模式下提交拓撲時,storm已經在運行並且正在寫日誌,可能在運行時不能覆蓋log4j,所以之前修改storm log4j文件應該可以在任何情況下工作。 – zenbeni 2014-09-05 08:54:19

+0

@zenbeni我實際上在local_mode中運行。 我在風暴安裝目錄中找不到任何與log4j相關的屬性。我正在使用apache-storm-0.9.2-孵化。 – holmes840 2014-09-05 09:12:52

回答

4

風暴框架使用自己的日誌記錄。您的日誌很可能會在安裝風暴的日誌目錄({Storm DIR}/logs)中結束。您可以在{Storm DIR} /logback/cluster.xml中找到風暴日誌屬性。它使用logback不log4j

+0

該文件爲apache-storm-incubating-0.9.2.jar中的文件定義屬性。當然,我可以改變它的屬性。但我想更改MyJarFile.jar的日誌記錄屬性。 cluster.xml不會影響其日誌記錄。另外,我還可以定義在提交拓撲之後打印的日誌的屬性,即在supervisor節點上。在提交我的拓撲之前,我只是無法將日誌(它們出現在MyJarFile.jar中)打印在文件中。 – holmes840 2014-09-08 09:19:35

+0

我如何使用log4j over slf4j jar? – Mani 2015-06-17 10:44:31

4

我會建議使用SLF4J爲您在暴風雨中登錄。您可能可以使LOG4J正常工作,但您將在羣集中的每個節點上執行其他設置。既然風暴已經爲你做了這個,我真的不明白這一點。

在你的項目中,包括這些Maven依賴(SLF4J-簡單的單元測試!):

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-simple</artifactId> 
    <version>1.7.5</version> 
    <scope>test</scope> 
</dependency> 

然後,你的拓撲/嘴/螺栓裏面你剛纔得到的記錄器:

private static final Logger LOG = LoggerFactory.getLogger(MySpout.class); 

在我的環境中,任何INFO及更高版本都會記錄到文件中,更重要的是,在Storm UI中可以看到。您只需點擊您的噴嘴/螺栓,然後單擊端口號即可進入日誌查看器頁面。

如果你想得到實際的文件,那麼你可以從每個節點收集它們(我的是在/var/log/storm/)。

+0

所以當你說「去實際的文件」你是否說工人 .log文件默認進入$ STORM_HOME/logs目錄。或者你的意思是說你配置你的log4j文件路徑爲/ var/log/storm? 另外,Storm是否有任何方式不使用Cluster.xml並使用您在部署到集羣的jar中發送的ur日誌文件。 – 2015-10-28 08:06:29

+0

@AnkurGarg我的意思是worker-port.log文件。只要您在拓撲結構中調用LOG.info或更高版本,它就會記錄到這些工作日誌並在Storm UI中可見。 – 2015-10-28 14:21:52

+0

好的。感謝您回覆工具包:) – 2015-10-28 14:23:16