flink中的自定义log4j属性

时间:2018-04-03 12:31:21

标签: logging log4j apache-flink

我们如何在flink run命令中从命令行传递自定义log4j属性?我已经解决了其他问题12,但我仍然无法覆盖现有的log4j文件,其中我有自定义日志记录配置。

我也试过./bin/flink run -m yarn-cluster -yn 1 -yD env.java.opts =" - Dlog4j.configuration =文件:///path/to/log4j.properties" ./examples/batch/WordCount.jar

有了这个,我看到它被添加到jobmanager日志,但flink客户端日志仍然使用conf / log4j.properties。

我尝试在flink-conf.yaml文件中添加env.java.opts并使用它,但我想从命令行传递自定义log4j.properties。此外,当从flink-conf.yaml传递额外选项时,我检查了在config.sh脚本中为$ FLINK_ENV_JAVA_OPTS设置了此参数。在这种情况下./bin/flink需要修改才能从自定义日志中读取。像这样的东西

log=$FLINK_LOG_DIR/flink-$FLINK_IDENT_STRING-client-$HOSTNAME.log

if [ "$FLINK_ENV_JAVA_OPTS" ]; then
        log_setting=(-Dlog.file="$log" "$FLINK_ENV_JAVA_OPTS" - 
        Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback.xml)
else
        log_setting=(-Dlog.file="$log" - 
        Dlog4j.configuration=file:"$FLINK_CONF_DIR"/log4j-cli.properties - 
        Dlogback.configurationFile=file:"$FLINK_CONF_DIR"/logback.xml)
fi

除了以上选项之外,还有其他方法可以传递自定义log4j吗?

2 个答案:

答案 0 :(得分:0)

不确定是否为时已晚。 在我们的实践中,我们通过在执行“ flink run”之前覆盖flink / conf /中现有的log4j-cli.properties文件来实现此目的。

答案 1 :(得分:0)

运行“ flink”客户端之前,您只需“导出FLINK_LOG_DIR = / path / to / your / log”即可。