У меня есть файл 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
?
Пожалуйста, дайте мне знать, если я могу быть более ясным.