spark中的log4j既不打印消息,也不将消息附加到Kafka

7uhlpewt  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(185)

我想使用log4j来记录spark流处理过程中发生的业务异常。尽管我想集中查看我的所有日志(不是集群中每个节点上的日志的一部分),但我还是想将日志发送到kafka,然后创建kafka consumer,将它们聚合在一起。
我创建log4j.properties文件并将其放在main/resources中。看起来是这样的:


# Kafka Appender

# define appender type

log4j.appender.KafkaAppender=kafka.producer.KafkaLog4jAppender

# brokerList

log4j.appender.KafkaAppender.brokerList= localhost:9092

# set the Kafka topic

log4j.appender.KafkaAppender.topic=logTopic

# define the layout

log4j.appender.KafkaAppender.layout=org.apache.log4j.PatternLayout

# date,  message, \n

log4j.appender.KafkaAppender.layout.ConversionPattern= %d-     %m%n

# console appender

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %% %m%n

# my custom logging to Kafka and stdout

log4j.logger.kafkaLogger = WARN, console, KafkaAppender

# root logger

log4j.rootCategory = ERROR, console

为了避免序列化,我还做了以下操作:

@transient lazy val kafkaLogger = org.apache.log4j.LogManager.getLogger("kafkaLogger")`

在可序列化的对象内。在同一个可序列化对象中有我的所有方法,它们使用kafkalogger。
在这些方法中,我编写了kafkalogger.warn(message),并尝试记录某些消息,但在console和kafka中都没有看到它们。
有什么建议吗?
[编辑]我已经意识到我的自定义log4j.properties就是所使用的属性(因为不会打印低于error的消息,因为它是在root logger中设置的)。但是,没有任何自定义消息打印到输出,也没有添加到kafka。
我不知道是什么问题

暂无答案!

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

相关问题