storm整合kafka过程中解决log4j冲突问题(Could not initialize class org.apache.log4j.Log4jLoggerFactory)

1、在storm整合kafka后,运行storm程序,报错如下:

12:47:09.110 [Thread-26-kafkaspout-executor[3 4]] ERROR org.apache.storm.util - Async loop died!
java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
	at org.apache.log4j.Logger.getLogger(Logger.java:39) ~[log4j-over-slf4j-1.6.6.jar:1.6.6]
	at kafka.utils.Logging$class.logger(Logging.scala:24) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.consumer.SimpleConsumer.logger$lzycompute(SimpleConsumer.scala:35) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.consumer.SimpleConsumer.logger(SimpleConsumer.scala:35) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.utils.Logging$class.info(Logging.scala:75) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.consumer.SimpleConsumer.info(SimpleConsumer.scala:35) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.consumer.SimpleConsumer.liftedTree1$1(SimpleConsumer.scala:94) ~[kafka_2.11-0.10.0.1.jar:?]
	at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRe
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Flink ,可以通过设置 `flink-conf.yaml` 文件来配置 Flink 的日志输出。在该文件,可以设置 `flink.logging.log4j2.appender.kafka` 属性来指定使用 Kafka Appender 进行日志输出。具体的配置方式如下: 1. 在 `flink-conf.yaml` 文件添加以下配置: ``` flink.logging.log4j2.appender.kafka.type = Kafka flink.logging.log4j2.appender.kafka.name = Kafka flink.logging.log4j2.appender.kafka.topic = log_topic flink.logging.log4j2.appender.kafka.layout.type = JsonLayout flink.logging.log4j2.appender.kafka.layout.compact = true flink.logging.log4j2.appender.kafka.property.bootstrap.servers = localhost:9092 ``` 上述配置,`flink.logging.log4j2.appender.kafka.type` 属性指定了使用 Kafka Appender 进行日志输出,`flink.logging.log4j2.appender.kafka.name` 属性指定了 Appender 的名称,`flink.logging.log4j2.appender.kafka.topic` 属性指定了 Kafka Topic 的名称,`flink.logging.log4j2.appender.kafka.layout.type` 属性指定了日志输出的格式,这里使用了 JsonLayout,`flink.logging.log4j2.appender.kafka.property.bootstrap.servers` 属性指定了 Kafka Broker 的地址。 2. 在 Flink 代码启动流处理任务时,可以通过 `StreamExecutionEnvironment.getConfig()` 方法获取 ExecutionConfig 对象,然后通过 `ExecutionConfig.setGlobalJobParameters()` 方法将 `flink-conf.yaml` 文件的配置加载到 ExecutionConfig 对象,如下所示: ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ExecutionConfig config = env.getConfig(); config.setGlobalJobParameters(ParameterTool.fromPropertiesFile("/path/to/flink-conf.yaml")); ``` 上述代码,`ParameterTool.fromPropertiesFile()` 方法可以将 `flink-conf.yaml` 文件的配置加载到一个 ParameterTool 对象,然后通过 `ExecutionConfig.setGlobalJobParameters()` 方法将该对象的配置加载到 ExecutionConfig 对象。 这样就可以使用 Kafka Appender 进行日志输出了。需要注意的是,Kafka Appender 的具体配置方式可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值