2016-07-07 83 views

回答

1

截至目前,還沒有簡單的方法來做到這一點,因爲flink總是在flink/conf下加載文件。

如果使用弗林克的單絲簇每工作模式(即你啓動你的腳本:flink run -m yarn-cluster ...),這裏是一個解決辦法:

  1. 複製flink/conf目錄到僅用於您的工作自定義位置
  2. 修改log4j.properties或任何其他配置文件
  3. 開展你的工作之前,運行export FLINK_CONF_DIR=/path/to/my/conf

根據您的flink版本,檢查文件flink/bin/config.sh。如果您運行翻過這一行:

FLINK_CONF_DIR=$FLINK_ROOT_DIR_MANGLED/conf 

改變它:

if [ -z "$FLINK_CONF_DIR" ]; then 
    FLINK_CONF_DIR=$FLINK_ROOT_DIR_MANGLED/conf; 
fi 

如果你找到另一種方式,請與我們分享。

1

按照弗林克文件(最新版本),你可以通過log4j的/的logback文件,當您提交使用,這裏的鏈接: https://ci.apache.org/projects/flink/flink-docs-master/monitoring/logging.html

總之,你可以提供「-Dlog4j.configuration=/path/to/log4j.properties」或「-Dlogback.configurationFile=/path/to/logback.xml」。您也可以爲每項工作配置不同的記錄器,因此您可以保留一個「logback"/"log4j」文件。下面是一個例子用的logback:

<!-- logback.xml --> 
<configuration> 
    <property name="LOG_HOME" value="/path/to/logs" /> 

    <appender name="JOB1" 
       class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${LOG_HOME}/job1/job.out</file> 
     <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
      <Pattern> 
       %d{yyyy-MM-dd HH:mm:ss} - %msg%n 
      </Pattern> 
     </encoder> 

     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- rollover hourly --> 
      <fileNamePattern>${LOG_HOME}/job1/%d{yyyyMMdd_HH}.%i.log</fileNamePattern> 
      <timeBasedFileNamingAndTriggeringPolicy 
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
       <maxFileSize>1MB</maxFileSize> 
      </timeBasedFileNamingAndTriggeringPolicy> 
     </rollingPolicy> 
    </appender> 

    <logger name="com.yourcompany.job1" level="INFO" additivity="false"> 
     <appender-ref ref="JOB1" /> 
    </logger> 

    <!-- rest of configs --> 
</configuration> 

而在你的代碼(例如使用Scala,這幾乎是與Java一樣):

import org.slf4j.LoggerFactory 

private final val logger = LoggerFactory.getLogger("com.yourcompany.job1") 
logger.info("some message") 

乾杯

+2

但是,在你們提供的「 - Dlog4j.configuration = /路徑/要/ log4j.properties「?它似乎不是Flink的命令行選項。 –

相關問題