为Kafka Appender配置log4j.properties,解析属性bootstrap.servers时出错

问题描述 投票:0回答:2

我想将 Kafka 附加程序添加到 Cloudera 集群中的audit-hdfs 日志中。

我已经成功使用 Kafka 附加程序配置了 log4j2.xml 文件,我需要将此 log4j2.xml 转换为 log4j2.properties 文件,以便能够将其与 HDFS 日志 log4j2.properties 文件合并。我无法执行此操作,因为当我使用 log4j2.properties 而不是 XML 启动虚拟进程时,我收到错误。

我尝试以几种不同的方式编写属性文件,总是导致 bootstrap.servers 属性出现问题

这是我的属性文件

filters = threshold

filter.threshold.type = ThresholdFilter
filter.threshold.level = ALL

appenders = console,kafka

appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n

appender.kafka.type = Kafka
appender.kafka.name = kafka
appender.kafka.layout.type = PatternLayout
appender.kafka.layout.pattern =%m%n
appender.kafka.property.type = Property
appender.kafka.property.bootstrap.servers = ip:port
appender.kafka.topic = cdh-audit-hdfs

问题出在这一行: appender.kafka.property.bootstrap.servers = ip:端口

我尝试过以下方法,但没有效果:

appender.kafka.property.bootstrap.servers = ip:port
appender.kafka.property.bootstrap\.servers = ip:port
appender.kafka.property.name = "bootstrap.servers"
appender.kafka.property.bootstrap.servers = ip:port
appender.kafka.property.key = "bootstrap.servers"
appender.kafka.property.value = ip:port

等等...

这是我的虚拟过程:

package blabla

import org.apache.logging.log4j.LogManager

object dummy extends App{
  val logger = LogManager.getLogger
  val record = "...c"
  while(true){
    logger.info(record)
    Thread.sleep(5000)
  }
}

我需要如何配置 log4j2.properties 才能定义此属性?

我希望这个过程能够在我的 Kafka 主题中写入记录,但我却收到这样的错误:

Exception in thread "main" org.apache.logging.log4j.core.config.ConfigurationException: No type attribute provided for component bootstrap
Exception in thread "main" org.apache.kafka.common.config.ConfigException: Missing required configuration "bootstrap.servers" which has no default value.
scala logging apache-kafka log4j log4j2
2个回答
1
投票

尝试这个解决方案,它对我有用:

appender.kafka.property.type=Property
appender.kafka.property.name=bootstrap.servers
appender.kafka.property.value=host:port

0
投票
appender.kafka.property1.type=property
appender.kafka.property1.name=bootstrap.servers
appender.kafka.property1.value=ip:port
appender.kafka.property2.type=property
appender.kafka.property2.name=security.protocol
appender.kafka.property2.value=SASL_PLAINTEXT
appender.kafka.property3.type=property
appender.kafka.property3.name=sasl.mechanism
appender.kafka.property3.value=PLAIN
appender.kafka.property4.type=property
appender.kafka.property4.name=sasl.jaas.configappender.kafka.property4.value=`org.apache.kafka.common.security.plain.PlainLoginModule required username=\"xxxx\" password=\"xxxx\";`
© www.soinside.com 2019 - 2024. All rights reserved.