#heroku #apache-kafka #log4j #apache-kafka-connect
#heroku #apache-kafka #log4j #apache-kafka-connect
Вопрос:
Я пытаюсь настроить конвейер данных из heroku postgres в snowflake, используя kafka и kafka connect через circleci.
мы можем правильно заполнить данные из Heroku Postgres в тему kafka. Но когда мы создаем sinkconnector для kafkaconnect к snowflake через Dockerfile.
мы не можем достичь цели, и мы не видим никаких связанных журналов в журналах Heroku.
Так хотелось настроить log4j для kafka и kafka connect, чтобы посмотреть, что происходит.
мы настроили log4j.properites в папке heroku /etc/kafka , но не можем увидеть соответствующую генерацию файла журнала.
Ниже приведен мой файл log4j.properties.
log4j.rootLogger=TRACE, stdout, file, kafkaAppender, connectAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
#log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.File=/etc/kafka/kafka-server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.connectAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.connectAppender.DatePattern='.'yyyy-MM-dd-HH
#log4j.appender.connectAppender.File=${kafka.logs.dir}/connect.log
log4j.appender.connectAppender.File=/etc/kafka/kafka-connect.log
log4j.appender.connectAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH
#log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log
log4j.appender.requestAppender.File=/etc/kafka/kafka-request.log
log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log
log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH
#log4j.appender.authorizerAppender.File=${kafka.logs.dir}/kafka-authorizer.log
log4j.appender.authorizerAppender.File=/etc/kafka/kafka-authorizer.log
log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
# Change the two lines below to adjust ZK client logging
log4j.logger.org.I0Itec.zkclient.ZkClient=INFO
log4j.logger.org.apache.zookeeper=INFO
# Change the two lines below to adjust the general broker logging level (output to server.log and stdout)
#log4j.logger.kafka=INFO
log4j.logger.kafka=TRACE, file
#log4j.logger.org.apache.kafka=INFO
log4j.logger.org.apache.kafka=TRACE
# Change to DEBUG or TRACE to enable request logging
#log4j.logger.kafka.request.logger=WARN, requestAppender
log4j.logger.kafka.request.logger=TRACE, file, requestAppender
log4j.additivity.kafka.request.logger=false
# Uncomment the lines below and change log4j.logger.kafka.network.RequestChannel$ to TRACE for additional output
# related to the handling of requests
#log4j.logger.kafka.network.Processor=TRACE, requestAppender
#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender
#log4j.additivity.kafka.server.KafkaApis=false
log4j.logger.kafka.network.RequestChannel$=WARN, requestAppender
log4j.additivity.kafka.network.RequestChannel$=false
log4j.logger.kafka.controller=TRACE, controllerAppender
log4j.additivity.kafka.controller=false
log4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender
log4j.additivity.kafka.log.LogCleaner=false
log4j.logger.state.change.logger=TRACE, stateChangeAppender
log4j.additivity.state.change.logger=false
# Access denials are logged at INFO level, change to DEBUG to also log allowed accesses
log4j.logger.kafka.authorizer.logger=INFO, file,authorizerAppender
#log4j.additivity.kafka.authorizer.logger=false
log4j.additivity.kafka.authorizer.logger=true
Комментарии:
1. Вы говорите, что используете dockerfile, но монтирует ли Heroku папку /etc/ kafka из контейнера для фактического чтения журналов? Я бы предположил, что он просто считывает стандартный вывод / stderr из контейнера. В любом случае вы никогда не назначаете ConnectAppender на уровень пакета или журнала
2. Учитывая, что мой Dockerfile вставлен в основной поток. Также я новичок в Heroku, Docker и Log4j, было бы полезно, если бы вы подробно рассказали о том, как разобраться в этом.
3. Я не знаю, как работает Heroku. Можете ли вы дать ссылку на документацию о том, как собираются журналы? И вам нужна строка типа
log4j.logger.org.apache.kafka.connect=INFO, connectAppender