java嵌入的kafka appender不使用log4j2 xml

juzqafwq  于 2021-06-06  发布在  Kafka
关注(0)|答案(0)|浏览(331)

我想使用log4j2xml为kafka appender编写单元测试。我正在使用嵌入式kafka,但它无法初始化${spring.embedded.kafka.brokers}此属性。
我得到这个错误

  1. java.lang.ExceptionInInitializerError
  2. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  3. at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273)
  4. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:96)
  5. ... 17 more
  6. Caused by: org.apache.kafka.common.config.ConfigException: Invalid url in bootstrap.servers: ${spring.embedded.kafka.brokers}
  7. at org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses(ClientUtils.java:51)
  8. at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:406)
  9. ... 38 more

log4j2.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration status="info">
  3. <Properties>
  4. <Property name="bootstrapServers">${bundle:application:kafka.bootstrap-servers}</Property>
  5. <Property name="securityProtocol">${bundle:application:kafka.security.protocol}</Property>
  6. </Properties>
  7. <Appenders>
  8. <Kafka name="kafkaAppender" topic="ERROR_TOPIC_DEV">
  9. <Filters>
  10. <ThresholdFilter level="ERROR" onMatch="ACCEPT" />
  11. </Filters>
  12. <JSONLayout />
  13. <Property name="bootstrap.servers">${bootstrapServers}</Property>
  14. <Property name="security.protocol">${securityProtocol}</Property>
  15. </Kafka>
  16. <Console name="consoleAppender" target="SYSTEM_OUT">
  17. <Filters>
  18. <ThresholdFilter level="INFO" onMatch="ACCEPT" />
  19. </Filters>
  20. <JSONLayout/>
  21. </Console>
  22. </Appenders>
  23. <Loggers>
  24. <Root level="Info">
  25. <AppenderRef ref="kafkaAppender"/>
  26. <AppenderRef ref="consoleAppender"/>
  27. </Root>
  28. <Logger name="org.apache.kafka" level="Info" />
  29. </Loggers>
  30. </Configuration>

应用程序属性

  1. kafka.bootstrap-servers=${spring.embedded.kafka.brokers}
  2. kafka.security.protocol=PLAINTEXT

在上面我试图从application.properties获取bootstrapserver,但是它无法初始化${spring.embedded.kafka.brokers}这个属性。另一方面,我得到securityprotocol的值,因为它是字符串。先谢谢你。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题