1. 程式人生 > >spark job 獨立的log4j配置方法

spark job 獨立的log4j配置方法

spark中提供了log4j的方式記錄日誌。可以在$SPARK_HOME/conf/下,將 log4j.properties.template 檔案copy為 log4j.properties 來啟用log4j配置。但這個配置為全域性配置, 不能單獨配置某個job的執行日誌。本文介紹spark (streaming) job獨立配置的log4j的方法。

設定方法

spark job提交時可以在 --conf 中配置log4j.configuration 引數來指定log4j 配置檔案嗎,例如:
spark-submit ... --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:/log4j.xml"


(這裡的log4j配置可以是 log4j.properties 或者 log4j.xml ,沒有限制)

配置示例

例如使用xml格式配置檔案:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >

    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender"
>
<param name="file" value="${log_name}.log" /> <param name="threshold" value="INFO"/> <param name="DatePattern" value="yyyyMMdd"/> <param name="append" value="true" /> <layout class="org.apache.log4j.PatternLayout"> <param
name="ConversionPattern" value="%d [%t] %-5p %c(%L) - %m%n"/>
</layout> </appender> <root> <priority value ="INFO"/> <appender-ref ref="FILE"/> </root> </log4j:configuration>

對於 <param name="file" value="${log_name}.log" /> 可以寫死一個log路徑,也可以在程式碼中做設定,例如設定log名字為myLog,可以在Logger初始化之前 設定: System.setProperty("log_name", "myLog");