Spark设置日志级别的三种方式, Spark-sumbit设置日志级别,修改Spark本地conf设置日志级别, IDEA中设置日志级别 17

1. Spark设置日志级别

前言

Spark有多种方式设置日志级别,这次主要记录一下如何在Spark-submit设置Spark日志级别,本文介绍三种方式

需求

  • 因为Spark的日志级别默认为INFO(log4j.rootCategory=INFO, console),这样在运行程序的时候有很多我不需要的日志信息都打印出来了,看起来比较乱,比较烦,抓不住重点,而我只想把warn和error打印出来。
  • 之前在测试环境或者在IDEA我是通过其他几种方式(下面会介绍)设置的,但是在生产环境下不允许我修改集群的配置文件(不是我负责~),而在代码里设置日志级别却不生效(原因还没找到),最后通过spark-submit里设置日志级别搞定的。

1.1 Spark-sumbit设置日志级别, Spark job 独立的log4j配置方法

1.1.1 Linux命令如下

spark-submit \
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties"

或者

spark-submit \
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:/log4j.xml" 

这里的log4j配置可以是 log4j.properties 或者 log4j.xml ,没有限制
其中log4j.properties/xml为我将本地的日志文件,拷贝到执行spark-submit的机器上

1.1.2 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”);

1.2 修改集群配置文件

cd $SPARK_HOME/conf 
cp log4j.properties.template log4j.properties
vim log4j.properties

将log4j.rootCategory=INFO, console改为log4j.rootCategory=WARN, console

1.3 在IDEA里设置

  • 将log4j.properties放在项目的src/main/resources即可
  • 代码里配置
spark.sparkContext.setLogLevel("WARN")

在这里插入图片描述

2. 总结Spark三种设置日志级别方式

  • 如果在自己的测试集群上, 直接修改$Spark_HOME/conf下的log4j.properties即可
  • 如果在IDEA里,将log4j.properties放在项目的src/main/resources即可
  • 如果在生产环境的集群,又不允许修改配置文件的话,用上面的spark-submit --conf即可
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值