Hi, I am learning kafka 0.7 this days, with a single node, :) When I run the example code, I defining the Kafka appender in my log4j.properties like the kafka apache quickstart page told.
log4j.appender.KAFKA = kafka.producer.KafkaLog4jAppender log4j.appender.KAFKA.Host = localhost log4j.appender.KAFKA.SerializerClass = kafka.test.AppenderStringSerializer log4j.appender.KAFKA.Port = 9092 log4j.appender.KAFKA.Topic = test log4j.logger.com.test.kafka.examples = INFO, KAFKA But then I met the following problems: log4j:WARN No such property [port] in kafka.producer.KafkaLog4jAppender. log4j:WARN No such property [host] in kafka.producer.KafkaLog4jAppender. Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.J9VMInternals.initialize(J9VMInternals.java:222) at org.apache.log4j.Logger.getLogger(Logger.java:118) at org.I0Itec.zkclient.ZkClient.<clinit>(ZkClient.java:57) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at kafka.producer.ZKBrokerPartitionInfo.<init>(ZKBrokerPartitionInfo.scala:62) at kafka.producer.Producer.<init>(Producer.scala:47) at kafka.javaapi.producer.Producer.<init>(Producer.scala:33) at kafka.javaapi.producer.Producer.<init>(Producer.scala:40) at com.test.kafka.examples.Producer.<init>(Producer.java:46) at com.test.kafka.examples.SimpleConsumerDemo.generateData(SimpleConsumerDemo.java:40) at com.test.kafka.examples.SimpleConsumerDemo.main(SimpleConsumerDemo.java:57) Caused by: kafka.producer.async.MissingConfigException: One of these connection properties must be specified: zkConnect, brokerList. at kafka.producer.KafkaLog4jAppender.activateOptions(KafkaLog4jAppender.scala:59) at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:257) at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:133) at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:97) at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:689) at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:647) at org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigurator.java:568) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:442) at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:476) at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471) at org.apache.log4j.LogManager.<clinit>(LogManager.java:125) In the source code, there are port and host property, and I add the zkConnect, brokerList. log4j.appender.KAFKA.zkConnect =localhost:2181 log4j.appender.KAFKA.brokerList = localhost:9092 There are still problems here. log4j:WARN Using default encoder - kafka.serializer.StringEncoder log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkEventThread). log4j:WARN Please initialize the log4j system properly. Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.J9VMInternals.initialize(J9VMInternals.java:222) at org.apache.log4j.Logger.getLogger(Logger.java:118) at org.I0Itec.zkclient.ZkClient.<clinit>(ZkClient.java:57) at java.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) at kafka.producer.ZKBrokerPartitionInfo.<init>(ZKBrokerPartitionInfo.scala:62) at kafka.producer.Producer.<init>(Producer.scala:47) at kafka.javaapi.producer.Producer.<init>(Producer.scala:33) at kafka.javaapi.producer.Producer.<init>(Producer.scala:40) at com.test.kafka.examples.Producer.<init>(Producer.java:46) at com.test.kafka.examples.SimpleConsumerDemo.generateData(SimpleConsumerDemo.java:40) at com.test.kafka.examples.SimpleConsumerDemo.main(SimpleConsumerDemo.java:57) Caused by: java.lang.NullPointerException at org.I0Itec.zkclient.ZkClient.close(ZkClient.java:915) at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:888) at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98) at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:84) at kafka.producer.ZKBrokerPartitionInfo.<init>(ZKBrokerPartitionInfo.scala:62) at kafka.producer.Producer.<init>(Producer.scala:47) Without the logger appender, the code runs almost right.(Other problems will be metioned in next mail.)