卡夫卡连接logindocker集装箱

我有一个需要作为docker容器运行的kafka连接jar。 我需要捕获容器中的日志文件上的所有连接日志(最好在/ etc / kafka / kafka-connect-logs目录中),稍后可以将其推送到本地主机(在其上运行docker引擎)docker中的卷。 当我更改我的connect-log4j.properties附加到日志文件时,我看到没有创build日志文件。 如果我没有使用docker的情况下尝试,通过更改connect-log4j.properties将日志写入日志文件来运行本地linux虚拟机上的kafka连接,它可以很好地工作,但不能从docker中运行。 任何build议将是非常有益的。

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中创build日志文件时,它工作正常。 另外,没有docker的同样进程在本地虚拟机上工作正常(创build日志文件)。

讨论结果:

立即在dockerfile中声明卷,并configuration日志loggingconfiguration,将日志输出直接放到卷上。 在docker运行(或者你开始你的容器)安装音量,你应该没问题。