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");

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐