微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Log4j 文件旋转在火花纱中不起作用

如何解决Log4j 文件旋转在火花纱中不起作用

我使用自定义 log4j 属性将我的应用程序提交给 yarn。自定义配置本身被驱动程序和执行程序识别和使用,日志轮换部分除外。 (原木旋转本身在没有纱线的情况下运行良好)

Hadoop: 2.7.0
Spark : 3.1.1
OS: Windows10

火花提交:

./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

log4j-test.properties:

# 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_HOME\logs\userlogs\application_1617490627891_0001\container_1617490627891_0001_01_000001 中只能找到 stderr 和 stdout 而不是 myApp.log

注意:
我 100% 确定 log4j-test.properties 有效,因为当我将 rootlogger 之类的内容更改为 TRACE 时,那些额外的 TRACE,DEBUG 日志将出现在标准输出中。 如果我更改为 log4j.rootLogger=INFO,my_file ,则不会将任何内容打印到 stdout ofcz,但 myApp.log 仍然无处可去。

编辑:
我想也许应用程序由于某种原因(例如权限问题)无法创建文件,但应用程序、spark、yarn、hdfs 日志中根本没有错误

解决方法

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

log4j.appender.file_appender.file=${spark.yarn.app.container.log.dir}/myApp.log

如果您需要引用正确的位置来放置日志文件 YARN 以便 YARN 可以正确显示和聚合它们,使用 spark.yarn.app.container.log.dir 在你的 log4j.properties 中

来源:https://spark.apache.org/docs/latest/running-on-yarn.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。