在hadoop jar调用中将参数传递到log4j.properties

时间:2019-01-27 21:27:09

标签: java hadoop logging mapreduce log4j

我有一个 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 调用会起作用。

如何传递参数,以便考虑调用 log4j.properties hadoop jar文件中进行相应的填充/设置?

请让我知道我是否更清楚

1 个答案:

答案 0 :(得分:0)

来自hadoop doc

  

-D属性=值给定属性使用值。

看起来-D后面应该有空格,而不是Java语法

  

-Dproperty = value