2017-09-26 121 views
1

我有一个卡夫卡连接jar需要作为码头集装箱运行。我需要在容器中的日志文件上捕获所有连接日志(最好在目录/ file -/etc/kafka/kafka-connect-logs中),稍后可以将其推送到本地主机(在其上运行docker引擎)码头工人的数量。当我将connect-log4j.properties更改为追加到日志文件时,我发现没有创建日志文件。如果我在没有docker的情况下尝试使用相同的操作,并通过更改connect-log4j.properties将日志写入日志文件来运行本地linux虚拟机上的kafka连接,它将完美工作,但不会从docker中运行。任何建议都会非常有帮助。卡夫卡连接日志码头集装箱

Docker File

FROM confluent/platform 

COPY Test.jar /usr/local/bin/ 
COPY kafka-connect-docker.sh /usr/local/bin/ 
COPY connect-distributed.properties /usr/local/bin/ 
COPY connect-log4j.properties /etc/kafka/connect-log4j.properties 

RUN ["apt-get", "update"] 
RUN ["apt-get", "install", "-yq", "curl"] 
RUN ["chown", "-R", "confluent:confluent", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"] 
RUN ["chmod", "+x", "/usr/local/bin/kafka-connect-docker.sh", "/usr/local/bin/connect-distributed.properties", "/usr/local/bin/Test.jar"] 
RUN ["chown", "-R", "confluent:confluent", "/etc/kafka/connect-log4j.properties"] 
RUN ["chmod", "777", "/usr/local/bin/kafka-connect-docker.sh", "/etc/kafka/connect-log4j.properties"] 

EXPOSE 8083 

CMD [ "/usr/local/bin/kafka-connect-docker.sh" ] 

connect-log4j.properties

# Root logger option 
log4j.rootLogger = INFO, FILE 

# Direct log messages to stdout 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=/etc/kafka/log.out 
# Define the layout for file appender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%m% 

log4j.logger.org.apache.zookeeper=ERROR 
log4j.logger.org.I0Itec.zkclient=ERROR 

kafka-connect-docker.sh

#!/bin/bash 
export CLASSPATH=/usr/local/bin/Test.jar 
exec /usr/bin/connect-distributed /usr/local/bin/connect-distributed.properties 

它时,我使用的是默认connect-log4j.properties(追加日志控制台),但我无法创建工作正常docker中的日志文件。此外,没有docker的同一进程在本地虚拟机中工作正常(创建日志文件)。

+1

您是否尝试立即声明该卷并将该文件直接放在卷文件夹中?像docker文件中的VOLUME/etc/kafka,然后在docker run中映射这个卷? – hecko84

+0

谢谢!这有助于:-) –

+0

我也把结果作为答案,见下文 – hecko84

回答

1

结果的讨论:

声明体积在dockerfile马上和配置日志记录配置日志输出直接放置到卷。在码头运行(或者你启动你的容器)安装音量,你应该没问题。