记录配置

本地模式

在本地模式下,例如从 IDE 运行应用程序时,你可以照常配置 log4j,即在类路径中使用 log4j.properties。在 maven 中一个简单的方法是在 src/main/resources 文件夹中创建 log4j.properties。这是一个例子:

log4j.rootLogger=INFO, console

# patterns:
#  d = date
#  c = class
#  F = file
#  p = priority (INFO, WARN, etc)
#  x = NDC (nested diagnostic context) associated with the thread that generated the logging event
#  m = message

# Log all infos in the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss.SSS} %5p [%-10c] %m%n

# Log all infos in flink-app.log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.file=flink-app.log
log4j.appender.file.append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss.SSS} %5p [%-10c] %m%n

# suppress info messages from flink
log4j.logger.org.apache.flink=WARN

独立模式

在独立模式下,使用的实际配置不是 jar 文件中的配置。这是因为 Flink 拥有自己的配置文件,这些文件优先于你自己的配置文件。

默认文件 :Flink 附带以下默认属性文件:

  • log4j-cli.properties:由 Flink 命令行客户端使用(例如 flink run)(不是在集群上执行的代码)
  • log4j-yarn-session.properties:启动 YARN 会话时由 Flink 命令行客户端使用(yarn-session.sh
  • log4j.properties:JobManager / Taskmanager 日志(独立和 YARN)

请注意,${log.file} 默认为 flink/log。它可以在 flink-conf.yaml 中被覆盖,通过设置 env.log.dir

env.log.dir 定义保存 Flink 日志的目录。它必须是一条绝对的道路。

日志位置 :日志是本地的,即它们是在运行 JobManager / Taskmanager 的机器中生成的。

Yarn :在 Yarn 上运行 Flink 时,你必须依赖 Hadoop YARN 的日志记录功能。最有用的功能是 YARN 日志聚合 。要启用它,请在 yarn-site.xml file 中将 yarn.log-aggregation-enable 属性设置为 true。启用后,你可以使用以下命令检索(失败的)YARN 会话的所有日志文件:

yarn logs -applicationId <application ID>

遗憾的是,日志仅在会话停止运行后可用,例如在失败后。