【发布时间】:2019-01-27 21:27:08
【问题描述】:
我有一个 log4j.properties 文件,其中包含以下行:
log4j.appender.fileOut.File=${log.dir}/${stage}_${date}.log
如果我只使用 java(而不是 Hadoop MapReduce),则以下工作:
java -cp <jar_dependencies> -Dstage=matching -Ddate=2018-11-26 -Dlog.dir=/tmp/project_folder/log/ -Dlog4j.configuration=file:path/to/conf/log4j.properties main_class
即log4j 参数 已正确传递和替换。但是,当尝试运行 mapReduce 作业时,会发出 hadoop jar 命令行调用:
hadoop jar <input_jar_here.jar> -Dstage=matching -Ddate=2018-11-26 -Dlog.dir=/tmp/project_folder/log/ -Dlog4j.configuration=file:path/to/conf/log4j.properties -libjars <jar_dependencies>
它不起作用,即参数未传递/替换。
注意:如果我对 log4j.properties 中的参数值进行硬编码,则之前的 hadoop jar 调用有效。
考虑到 hadoop jar 调用,如何传递参数以便在 log4j.properties 文件中相应地填充/设置它们?
如果我可以更清楚,请告诉我。
【问题讨论】:
标签: java hadoop logging mapreduce log4j