我在 Yarn 集群中运行 Apache spark 应用程序。我使用相同的应用程序多次触发(spark-submit)不同的参数(参数之一是
--name
)并且我有用于日志的通用log4j.xml文件。
我想在 log4j.xml 中使用像
${spark.app.name}
这样的东西来处理来自各个 spark 作业的不同日志。
我尝试在 log4j.xml 中使用
${spark.app.name}
但它不起作用。
试过: 我尝试在 log4j.xml
中使用
${spark.app.name}
和
${spark.app.id}
预计会发生: 能够在每一行中看到 spark 作业名称
实际结果: Spark 作业名称没有出现在日志中,而是空的。
注意:我已经完成了这个问题在驱动程序日志中输出 Spark 应用程序名称。它没有帮助。
我认为您正在尝试使用 spark 属性 (
${spark.app.name}
) 来配置 log4j。这行不通。
如果你有一个值(
name
)来区分工作,你可以设置一个系统属性并在log4j.xml
文件中使用它。
在
logback.xml
中使用这个变量:${sys:logfilename}
应用触发时添加系统属性:
spark-submit -Dlogappname=App1 app.jar