독립 실행 형 클러스터에서 여러 개의 flink 작업을 실행하고 있습니다. 다른 flink 작업에 대해 다른 로그 파일을 원합니다. 어떻게 flink 작업을 제출하는 동안 다른 log4j.properties 파일을 전달할 수 있습니까?동일한 독립 실행 형 클러스터에서 실행중인 다른 flink 작업에 대해 다른 log4j.properties 파일을 지정하는 방법
1
A
답변
1
플 링크가 항상 flink/conf
아래의 파일을로드하기 때문에 지금은 간단한 방법이 없습니다.
당신이 FLINK의 한 실 클러스터 당 작업 모드를 사용하는 경우 (즉, 당신이 스크립트를 실행 : flink run -m yarn-cluster ...
는) :
- 가에
flink/conf
디렉토리를 복사, 여기에 해결 방법입니다 작업에만 사용 사용자 정의 위치는 - 는 작업을 시작하기 전에
log4j.properties
또는 임의의 다른 구성 파일 - 을 수정 실행
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")
건배
그러나 당신이 제공 않는다 "- Dlog4j.configuration =/path/to/log4j.properties "? 그것은 Flink의 명령 행 옵션으로 보이지 않습니다. –