Apache flink 在独立flink集群中提交flink作业时,如何指定不同于守护程序日志文件的日志文件

Apache flink 在独立flink集群中提交flink作业时,如何指定不同于守护程序日志文件的日志文件,apache-flink,flink-streaming,Apache Flink,Flink Streaming,当我启动flink独立集群时,它将守护程序日志记录在conf/log4j.properties文件中提到的一个文件中,当我在该集群中提交flink作业时,它使用相同的属性文件记录应用程序日志并写入TaskManager上的相同日志文件中。我希望在flink独立集群中提交的每个应用程序都有单独的日志文件。有没有办法实现这一点当您使用./bin/flink shell脚本提交作业时,请使用以下环境变量来控制日志文件位置: FLINK_LOG_DIR指定日志将出现的目录 FLINK_IDENT_字符

当我启动flink独立集群时,它将守护程序日志记录在conf/log4j.properties文件中提到的一个文件中,当我在该集群中提交flink作业时,它使用相同的属性文件记录应用程序日志并写入TaskManager上的相同日志文件中。我希望在flink独立集群中提交的每个应用程序都有单独的日志文件。有没有办法实现这一点

当您使用./bin/flink shell脚本提交作业时,请使用以下环境变量来控制日志文件位置:

  • FLINK_LOG_DIR指定日志将出现的目录
  • FLINK_IDENT_字符串允许您使文件名唯一
例如,如果你开始工作时

FLINK_LOG_DIR=/var/log FLINK_IDENT_STRING=my_app_id ./bin/flink run /path/to/the.jar
然后日志将显示在/var/log/flink-my_app_id-client-$HOSTNAME.log中


请注意,这仅适用于通过日志框架记录的消息,而不适用于刚打印到stdout的内容。

这将只适用于客户端的日志,而不适用于运行到集群中的应用程序。对我来说,在使用本地flink群集时,它会创建正确的日志文件,并向其中写入一些消息,但是大多数消息仍会写入默认日志,因此所有作业仍会转到默认日志。我不知道为什么会发生这种情况,因为我的logback.xml包含一个用于
de.mydomain.myapp
de.mydomain.myapp.somethingelse
的日志,somethingelse会转到单独的日志,但是
de.mydomain.myapp.somethingelse
会转到默认日志。