log4j 如何在日志中使用Spark应用程序名称?

ffx8fchx  于 2023-03-29  发布在  Spark
关注(0)|答案(1)|浏览(194)

我在Yarn集群中运行Apache spark应用程序。我使用相同的应用程序使用不同的参数(其中一个参数是--name)多次触发(spark-submit),并且我有一个通用的log4j.xml文件用于日志。
我想在log4j.xml中使用像${spark.app.name}这样的东西来处理来自单个spark作业的不同日志。
我尝试在log4j.xml中使用${spark.app.name},但它不起作用。
1.我做错了什么?
1.有没有更好的方法在日志中记录spark应用程序名称?
尝试:我尝试在log4j.xml中使用${spark.app.name}${spark.app.id}
期望发生:能够在每一行中看到spark作业名称
实际结果:Spark作业名称未出现在日志中,而是为空。
注意:我已经通过了这个问题Output Spark application name in driver log。这是没有帮助的。

bsxbgnwa

bsxbgnwa1#

我想你正在尝试使用spark属性(${spark.app.name})来配置log4j。这不会起作用。
如果您有一个值(name)来区分作业,您可以设置一个系统属性并在log4j.xml文件中使用它。
logback.xml中使用此变量:${sys:logfilename}
在应用被触发时添加系统属性:spark-submit -Dlogappname=App1 app.jar

相关问题