
# 调整Spark日志级别
#### 配置场景
在某些场景下，当任务已经启动后，用户想要修改日志级别以定位问题或者查看想要的信息。
用户可以在进程启动前，在进程的JVM参数中增加参数"-Dlog4j.configuration.watch=true"来打开动态设置日志级别的功能。进程启动后，就可以通过修改进程对应的log4j配置文件，来调整日志打印级别。
目前支持动态设置日志级别功能的有：Driver日志、Executor日志、AM日志、JobHistory日志、JDBCServer日志。
允许设置的日志级别是：FATAL，ERROR，WARN，INFO，DEBUG，TRACE和ALL。
#### 配置描述
在进程对应的JVM参数配置项中增加以下参数。
表1参数描述 
| **参数**                      | **描述**                           | **默认值**      |
|:---|:---|:---|
| -Dlog4j.configuration.watch | 进程JVM参数，设置成"true"用于打开动态设置日志级别功能。 | 未配置，即为false。 |
   
Driver、Executor、AM进程的JVM参数如[表2]所示。在Spark客户端的配置文件"spark-defaults.conf"中进行配置。Driver、Executor、AM进程的日志级别在对应的JVM参数中的"-Dlog4j.configuration"参数指定的log4j配置文件中设置。
 表2进程的JVM参数1 
| **参数**                          | **说明**          | **默认日志级别** |
|:---|:---|:---|
| spark.driver.extraJavaOptions   | Driver的JVM参数。   | INFO       |
| spark.executor.extraJavaOptions | Executor的JVM参数。 | INFO       |
| spark.yarn.am.extraJavaOptions  | AM的JVM参数。       | INFO       |
   
JobHistory Server和JDBCServer的JVM参数如[表3]所示。在服务端配置文件"ENV_VARS"中进行配置。JobHistory Server和JDBCServer的日志级别在服务端配置文件"log4j.properties"中设置。
 表3进程的JVM参数2 
| **参数**            | **说明**                   | **默认日志级别** |
|:---|:---|:---|
| GC_OPTS           | JobHistory Server的JVM参数。 | INFO       |
| SPARK_SUBMIT_OPTS | JDBCServer的JVM参数。        | INFO       |
   
**示例：**
为了动态修改Executor日志级别为DEBUG，在进程启动之前，修改"spark-defaults.conf"文件中的Executor的JVM参数"spark.executor.extraJavaOptions"，增加如下配置：
```
-Dlog4j.configuration.watch=true
```
提交用户应用后，修改"spark.executor.extraJavaOptions"中"-Dlog4j.configuration"参数指定的log4j日志配置文件（例如："-Dlog4j.configuration=file:${BIGDATA_HOME}/FusionInsight_Spark2x_8.1.0.1/install/FusionInsight-Spark2x-\*/spark/conf/log4j-executor.properties"）中的日志级别为DEBUG，如下所示：
```
log4j.rootCategory=DEBUG, sparklog
```
DEBUG级别生效会有一定的时延。
