我一直在試圖找到Spark的所有log4j屬性的參考,並且很難找到它。我發現很多例子,人們看到它們有一些。但我試圖看看是否有一個參考的地方有所有這些。有沒有Spark Log4j屬性的參考?
對於我特殊的用例,我寫了一些代碼,通過發射spark-submit作業執行一系列數據轉換,然後可以由其他用戶使用/擴展。我不需要大部分默認情況下會引發吐出,並且很容易設置像log4j.rootLogger = WARN,stdout。但是,INFO中有一些有用的東西可以打印到屏幕上。特別是:
org.apache.spark.deploy.yarn.Client (Logging.scala:logInfo(54)) -
client token: Token { kind: YARN_CLIENT_TOKEN, service: }
diagnostics: N/A
ApplicationMaster host: N/A
ApplicationMaster RPC port: -1
queue: ****
start time: 1508185983070
final status: UNDEFINED
tracking URL: ***My tracking URL***
user: ***User***
甚至更具體的跟蹤URL。由於我對Log4j有限的瞭解,這可能也有點讓人覺得這有點難。我試過做類似這樣的事情:
org.apache.spark.deploy.yarn.Client=Info
但這似乎不是合法的記錄屬性。有沒有辦法只在Spark中獲得該信息?看到所有可能的日誌記錄屬性是否有竅門?
謝謝!
更新
我能想出解決辦法。其中大部分原因是由於我不知道log4j.properties如何工作,但現在對它有更好的處理。
您可以設置每個類的記錄器和日誌級別,並將其保存到所有子類。
我改變了我的log4j.properties看起來是這樣的:
log4j.logger.org.apache.spark=INFO, RollingAppender
log4j.additivity.org.apache.spark=false
log4j.logger.org.apache.hadoop=INFO, RollingAppender
log4j.additivity.org.apache.hadoop=false
log4j.logger.org.spark_project.jetty=INFO, RollingAppender
log4j.additivity.org.spark_project.jetty=false
log4j.logger.org.apache.spark.deploy.yarn.Client=INFO, RollingAppender
log4j.additivity.org.apache.spark.deploy.yarn.Client=false
這重定向幾乎紗線日誌所有Spark到一個文件中(從蒂亞戈共享的鏈接略有修改)。
關鍵的東西我失蹤了......
1)我需要包括log4j.logger.CLASS_NAME,我錯過了log4j.logger位..
2)需要有log4j的。 additivity.CLASS_NAME =假。沒有這個,它只會將INFO登錄到默認設置。
起初很讓人困惑,但是一旦你把圖案放下,它就開始有點意義了。
謝謝Thiago,這是非常有幫助的。我已經注意到的一個挑戰是日誌輸出到控制檯,除非我設置根日誌記錄器。它似乎沒有考慮所有火花噪聲的文件記錄覆蓋。其中一些也是紗線的東西,我遇到的問題的一部分就是知道要調整哪個日誌設置來控制它。例如,「INFO org.apache.spark.deploy.yarn.Client」出現在我的控制檯上。我試着設置一些東西,比如log4j.logger.org.apache.spark.deploy.yarn.Client = WARN,這似乎沒有做任何事情。有什麼辦法可以把它解決嗎? –