java - 将参数传递给hadoop jar调用中的log4j.properties

标签 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文件中?

请让我知道是否可以更清楚。

最佳答案

hadoop doc

-D property=value Use value for given property.



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

-Dproperty=value

关于java - 将参数传递给hadoop jar调用中的log4j.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54393032/

相关文章:

php - 如何用 log4php 实现 "object dumping"?

logging - 从 TimeBasedRollingPolicy 移动到 SizeAndTimeBasedRollingPolicy 以在每个 mignight 或最大大小翻转

java - JAX-RS:Stateless、Singleton、RequestScoped 混淆

python - Django 日志记录到哪里?

java - 将命令行输入转换为数组

hadoop - 在 Spark SQL 中使用正则表达式函数从字符串中提取特定数字

windows - 在Windows上构建Hadoop:branch-1-win

java - 在Java中访问HDFS文件系统的异常

java - 如何使用计时器移动方 block

java - Hibernate 中作为复合标识符的组件