Looks like a bug to me! Here's the issue: a Properties component is injected into a kafka appender, but there is no way to create a Property or Properties component directly via the configuration builder API. The top level properties aren't injected in the kafka appender (and manager), so they're unused.
Interestingly enough, I don't see a way to inject KeyValuePair components either (which is a similar plugin class in log4j-core). Could you make an issue here: https://issues.apache.org/jira/browse/LOG4J2 On 29 March 2017 at 09:27, Marvin Geitner <[email protected]> wrote: > Hi all, > > I'm trying to configure the Kafka Appender with the programmatic > configuration described in the manuals. So I created the > ConfigurationFactory and set up the AppenderComponentBuilder. > > If I execute the Application I'll get following exception: > > Caused by: org.apache.kafka.common.config.ConfigException: Missing > required configuration "bootstrap.servers" which has no default value. > > Obviously the property "bootstrap.servers" hasn't been set. > > A builder.addProperty("bootstrap.servers", "kafka.host"); doesn't work. > In XML the configuration looks like <Property name="bootstrap.servers"> > kafka.host</Property>. > > But how do I set this in java? > > The code looks like the following: > > static Configuration createConfiguration(final String name, > ConfigurationBuilder<BuiltConfiguration> builder) { > > builder.setConfigurationName(name); > builder.setStatusLevel(Level.INFO); > > AppenderComponentBuilder kafkaBuilder = > builder.newAppender("KafkaLogger > ", "Kafka") > .addAttribute("topic", "testTopic"); > kafkaBuilder.add(builder.newLayout("PatternLayout") > .addAttribute("pattern", "%d{HH:mm:ss:SSS} | %logger{20} | > %msg%n%ex{5}")); > > builder.add(kafkaBuilder); > > builder.add(builder.newRootLogger(Level.INFO).add( > builder.newAppenderRef("KafkaLogger"))); > > return builder.build(); > } > > Hope someone can help me. > > Thanks and BR, > Marvin > -- Matt Sicker <[email protected]>
