2016-07-07 4 views

답변

1

플 링크가 항상 flink/conf 아래의 파일을로드하기 때문에 지금은 간단한 방법이 없습니다.

당신이 FLINK의 한 실 클러스터 당 작업 모드를 사용하는 경우 (즉, 당신이 스크립트를 실행 : 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 

다른 방법을 찾을 경우, 우리와 함께 공유하시기 바랍니다. 당신이 "-Dlog4j.configuration=/path/to/log4j.properties"를 제공 할 수있는, 한마디로 https://ci.apache.org/projects/flink/flink-docs-master/monitoring/logging.html

다음 FLINK 문서 (최신 버전), 당신은 당신이 제출하는 경우에 사용하는 log4j에/logback 파일을 전달할 수 있습니다에 따르면

1

, 여기에 링크입니다 또는 "-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> 

그리고 코드에서 (스칼라와 예, 그것은 거의 자바와 동일합니다) :

import org.slf4j.LoggerFactory 

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

건배

+2

그러나 당신이 제공 않는다 "- Dlog4j.configuration =/path/to/log4j.properties "? 그것은 Flink의 명령 행 옵션으로 보이지 않습니다. –