logback写入kafka

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Curryth_/article/details/89477817

引入依赖

implementation('org.springframework.kafka:spring-kafka')

配置文件

kafka:
    bootstrap-servers: 127.0.0.1:9092
    producer:
      retries: 0
      batch-size: 16384
      buffer-memory: 33554432
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: analyse-consumer-group
      auto-offset-reset: earliest
      enable-auto-commit: true
      auto-commit-interval: 100
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

logback.xml配置添加

 <!-- kafka appender -->
    <appender name="KAFKA" class="com.cbay.api.web.cs.infrastructure.util.KafkaAppender">
    </appender>
    
     <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="KAFKA" />
    </root>

工具类

/**
 * 自定义KafkaAppender将日志输出到Kafka中
 * @author liuyazhuang
 *
 */
public class KafkaAppender extends AppenderBase<ILoggingEvent> {

    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;

    @Override
    protected void append(ILoggingEvent iLoggingEvent) {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "http://127.0.0.1:9092");
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.REQUEST_TIMEOUT_MS_CONFIG, "1000");
        props.put(ProducerConfig.RETRIES_CONFIG, 0);
        kafkaTemplate = new KafkaTemplate<>(new DefaultKafkaProducerFactory<String, String>(props));
        String logStr = iLoggingEvent.getFormattedMessage();
        if (logStr != null) {
            kafkaTemplate.send("LOG", logStr);
        }
    }
}

其实我也不知道为什么
在yml中配置了我的services:127.0.0.1:9092
在发送消息类中还要增加 props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, “http://127.0.0.1:9092”);这条语句?
有知道的可以在下面评论留言哦

猜你喜欢

转载自blog.csdn.net/Curryth_/article/details/89477817
今日推荐