But how do you do this for KeyValuePair? When I do:
LayoutComponentBuilder gelfBuilder = builder.newLayout("GelfLayout"); gelfBuilder.addAttribute("host", "myself"); gelfBuilder.addComponent(builder.newComponent("foo", "KeyValuePair", "bar")); it doesn't work and I get this error message: ERROR KeyValuePair contains an invalid element or attribute "name" It seems like the problem is that KeyValuePair have a "key" field, but builder.newComponent() assumes that it has a "name" field (like Property). On Wed, Mar 29, 2017 at 5:46 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote: > Mikael’s solution is correct. Every item in the ConfigurationBuilder is a > Component. We have “special” Components for things that are always used, > such as Loggers and Appenders. But we can’t know about every type of > Component so in those cases you just use the generic Component. > > Ralph > > > On Mar 29, 2017, at 8:26 AM, Matt Sicker <boa...@gmail.com> wrote: > > > > 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 <mgeit...@novomind.com> 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 <boa...@gmail.com> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > -- [image: MagineTV] *Mikael Ståldal* Senior software developer *Magine TV* mikael.stal...@magine.com Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com Privileged and/or Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such a person), you may not copy or deliver this message to anyone. In such case, you should destroy this message and kindly notify the sender by reply email.