我使用 Log4j2 Kafka 附加程序将所有应用程序日志发送到 Kafka,并且它可以工作。但在某种情况下,当我故意关闭代理时,应用程序会挂起,并且 kafka 附加程序会继续重试建立连接。
当代理宕机时,如何停止写入 Kafka?并在可用后恢复?
以下是我使用的appender配置。
<Kafka name="KafkaServiceStatInfo" topic="testKafkaLogs">
<PatternLayout pattern="%m"/>
<Property name="bootstrap.servers">localhost:9092</Property>
<Property name="acks">0</Property>
</Kafka>
<Async name="Async">
<AppenderRef ref="KafkaServiceStatInfo"/>
</Async>
https://logging.apache.org/log4j/log4j-2.4/manual/appenders.html#FailoverAppender您应该使用故障转移附加程序。您可以将主附加程序设置为 kafka。总而言之,当kafka brkers宕机时,可以给appender设置一个辅助appender。