首页 > 解决方案 > 无法在 spark 中使用 jar 中的 log4j.properties

问题描述

我的 log4j.properties 与 uber/fat 应用程序 jar 打包在一起,这是我的 spark 提交命令

spark-submit --files file:log4j.properties 
--conf spark.driver.extraJavaOptions=-Dlog4j.configuration=classpath:log4j.properties  
--conf spark.executor.extraJavaOptions=-Dlog4j.configuration=classpath:log4j.properties  
--class com.myproject.Application --deploy-mode cluster --master yarn s3://myappbucket/application.jar

log4j.properties 已打包并在 jar 中可用,但是在运行应用程序时它们对执行程序不可用,我面临以下错误,我在这里缺少什么,如何获取执行程序可用的 log4j.properties /worker 节点,有人可以帮忙吗

我在 spark submit 命令中使用了 classpath:log4j.properties,看起来执行程序没有在下面进行我的 log4j 配置更改

log4j.logger.com.myproject.Application=INFO,appfile 
log4j.appender.appfile=org.apache.log4j.RollingFileAppender
log4j.appender.appfile.File=${base.log.dir}/app.log
log4j.appender.appfile.MaxFileSize=200MB
log4j.appender.appfile.MaxBackupIndex=10 

没有任何效果,所有内容都打印在 stdout 和 stderr 日志上,而不是创建 app.log 并记录在 app.log 文件中

标签: javaapache-sparklogginglog4j

解决方案


file:意味着它正在文件系统上而不是在 jar 中寻找配置文件。你可能想试试classpath:log4j.properties


推荐阅读