記錄配置

本地模式

在本地模式下,例如從 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>

遺憾的是,日誌僅在會話停止執行後可用,例如在失敗後。