当前位置:   article > 正文

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

spark 设置日志级别

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"
  • 1
  • 2

或者

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

这里的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" 
  • 1
  • 2

(这里的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> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

对于<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
  • 1
  • 2
  • 3

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

1.3 在IDEA里设置

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

在这里插入图片描述

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

  • 如果在自己的测试集群上, 直接修改$Spark_HOME/conf下的log4j.properties即可
  • 如果在IDEA里,将log4j.properties放在项目的src/main/resources即可
  • 如果在生产环境的集群,又不允许修改配置文件的话,用上面的spark-submit --conf即可
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/389458
推荐阅读
相关标签
  

闽ICP备14008679号