当前位置: 首页 > news >正文

spark log4j日志文件动态参数读取

需要在log4j xml文件中设置动态参数,并支持spark任务在集群模式下,动态参数读取正常;

1.log4j配置文件 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="Log-Appender-Config" ><Properties><Property name="logServerHost">${sys:logServer}</Property><Property name="logServerPort">${sys:logServerPort}</Property></Properties><Appenders><Socket name="Socket" host="${logServerHost}" port="${logServerPort}" ><PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-t] - %m%n"/><ThresholdFilter level="info" /></Socket><Async name="Async"><AppenderRef ref="Socket"/></Async><Console name="stdout" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/><ThresholdFilter level="info" /></Console></Appenders><Loggers><Logger name="org.apache.spark" level="info" additivity="false"><AppenderRef ref="Socket"/></Logger><Root level="info"><AppenderRef ref="stdout"/></Root></Loggers>
</Configuration>

spark 配置log4j2.xml,并设置了两个动态参数,logServer和logServerPort;

spark提交任务后driver和executer均需要获取上述参数初始化日志配置;

2.driver和executer获取参数方式

--conf "spark.driver.extraJavaOptions=-DlogServer=127.0.0.1 -DlogServerPort=60201" --conf "spark.executor.extraJavaOptions=-DlogServer=127.0.0.1 -DlogServerPort=60201"

spark提交任务时设定动态参数值,给driver和executer设置额外jvm参数;

注意:

参数key命名不要以spark*开头,会被spark认为是内部变量,在Spark中,spark.executor.extraJavaOptions是用来为Executor进程设置额外的JVM选项的,但不包括Spark的内部配置选项;

错误示例如下:

Caused by: java.lang.Exception: spark.executor.extraJavaOptions is not allowed to set Spark options (was '-Dspark.log.server=127.0.0.1 -Dspark.log.server.port=60201'). Set them directly on a SparkConf or in a properties file when using ./bin/spark-submit.

将上述key名spark.log.server和spark.log.server.port修改为非spark开头即可;

参考:

https://www.cnblogs.com/yanhuahayi/p/14297615.html

Log4j2.xml中动态读取配置_log4j2 动态属性读取-CSDN博客

http://www.lryc.cn/news/329436.html

相关文章:

  • 设计模式,装修模式,Php代码演示,优缺点,注意事项
  • ubuntu下vscode ctrl+tab松开ctrl后不自动选中文件
  • 【云开发笔记No.19】关于中台架构(1)
  • 对于提高Web安全,WAF能有什么作用
  • Go 源码之 gin 框架
  • BM19 寻找峰值(二分查找)
  • 4.数组和切片【go】
  • Abaqus周期性边界代表体单元Random Sphere RVE 3D (Mesh)插件
  • 家庭记账本(源码+文档)
  • 深度学习评价指标(1):目标检测的评价指标
  • jmeter性能压测的标准和实战中会遇到的问题
  • 6-82 求链式线性表的倒数第K项
  • CDH集群hive初始化元数据库失败
  • 【ESP32S3 Sense接入语音识别+MiniMax模型对话】
  • 【Java初阶(七)】接口
  • Mac OS上使用matplotlib库显示中文字体
  • IP种子是什么?理解和应用
  • 车载以太网AVB交换机 gptp透明时钟 5口 全千兆 SW1500
  • Can‘t connect to server on ‘localhost‘ (10061)
  • 虹科Pico汽车示波器 | 免拆诊断案例 | 2018款东风风神AX7车发动机怠速抖动、加速无力
  • zookeeper如何管理客户端与服务端之间的链接?(zookeeper sessions)
  • 【Java多线程】7——阻塞队列线程池
  • 同步复位和异步复位的优缺点
  • Code Review(代码审查)
  • 《拆解一切问题》如何成为解决难题的高手 - 三余书屋 3ysw.net
  • matlab——基于三维激光扫描点云的树冠体积计算方法
  • 如何在jupyter使用新建的虚拟环境以及改变jupyter启动文件路径。
  • Exception in thread “main“ com.fasterxml.jackson.databind.JsonMappingException:
  • 第三十九章 保护与 IRIS 的 Web 网关连接
  • java数据结构与算法刷题-----LeetCode127. 单词接龙