Apache spark Log4j文件旋转不';不要在火花线中工作

Apache spark Log4j文件旋转不';不要在火花线中工作,apache-spark,log4j,yarn,Apache Spark,Log4j,Yarn,我向拥有定制log4j属性的纱线提交申请。除日志旋转部分外,驱动程序和执行程序都可以识别和使用自定义配置本身。 (原木旋转本身在没有纱线的情况下运行良好) spark提交: ./bin/spark-submit.cmd --class scala_spark.ScalaApp --master yarn --files "./myapp/log4j-test.properties" --conf "spark.driver.extraJavaOptions=-Dlo

我向拥有定制log4j属性的纱线提交申请。除日志旋转部分外,驱动程序和执行程序都可以识别和使用自定义配置本身。 (原木旋转本身在没有纱线的情况下运行良好)

spark提交:

./bin/spark-submit.cmd --class scala_spark.ScalaApp --master yarn --files "./myapp/log4j-test.properties" --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --deploy-mode cluster ./myapp/myApp.jar
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=INFO, A1, my_file

log4j.logger.scala_spark=DEBUG

 # A1 Appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender       
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# file Appender
log4j.appender.my_file=org.apache.log4j.FileAppender
log4j.appender.my_file.append=true
log4j.appender.my_file.file=./myApp.log
log4j.appender.my_file.threshold=INFO
log4j.appender.my_file.layout=org.apache.log4j.PatternLayout
log4j.appender.my_file.layout.ConversionPattern=%-5p %c: %m%n
log4j测试。属性:

./bin/spark-submit.cmd --class scala_spark.ScalaApp --master yarn --files "./myapp/log4j-test.properties" --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --deploy-mode cluster ./myapp/myApp.jar
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=INFO, A1, my_file

log4j.logger.scala_spark=DEBUG

 # A1 Appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender       
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# file Appender
log4j.appender.my_file=org.apache.log4j.FileAppender
log4j.appender.my_file.append=true
log4j.appender.my_file.file=./myApp.log
log4j.appender.my_file.threshold=INFO
log4j.appender.my_file.layout=org.apache.log4j.PatternLayout
log4j.appender.my_file.layout.ConversionPattern=%-5p %c: %m%n
结果:
$HADOOP\u HOME\logs\userlogs\application\u 1617490627891\u 0001\container\u 1617490627891\u 0001\u 01\u000001
中,只能找到stderr和stdout,但不能找到myApp.log

注意:
我100%确信log4j-test.properties有效,因为当我将rootlogger之类的东西更改为TRACE时,这些额外的跟踪、调试日志将出现在stdout中。 如果我更改为log4j.rootLogger=INFO,即我的_文件,则不会向stdoutofcz打印任何内容,但myApp.log仍然不存在

编辑:

我想可能是由于某些原因(比如权限问题),应用程序无法创建文件,但是应用程序、spark、Thread、hdfs日志中没有任何错误。

解决方案
我已将日志文件位置更改为:

log4j.appender.file_appender.file=${spark.yarn.app.container.log.dir}/myApp.log
如果您需要对适当位置的引用以将日志文件放入 纱线,以便纱线能够正确地显示和聚合它们,使用 log4j.properties中的spark.warn.app.container.log.dir

资料来源: