springboot集成kafka,log4j2,实现日志监听功能
- 下载安装zk和kafka
- 启动zk: 进入cmd,输入zkServer (zk需先设置系统变量)
3 启动kafka : 进入kafka安装目录,输入命令 :
4 创建springboot项目,加入kafka 依赖和log4j2 依赖。
<dependencies>
<!--spring-boot-starter-web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--log4j2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--kafka-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<exclusions> <!-- exclude掉过时的log依赖 -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--spring-boot-starter-test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
</dependencies>
5.在resources目录下添加log4j2.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<pattern>%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n</pattern>
</PatternLayout>
</Console>
<Kafka name="Kafka" topic="kafkaLogTest">
<PatternLayout pattern=" %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %X{requestID} %c{1} - %msg%n" />
<Property name="bootstrap.servers">localhost:9092</Property>
</Kafka>
</Appenders>
<Loggers>
<root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="Kafka" />
</root>
</Loggers>
</Configuration>
6.在application.xml中添加kafka 配置和log4j2配置
server:
port: 8082
spring:
kafka:
bootstrap-servers: localhost:9092
producer: #生产者
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer: #消费者
group-id: test #设置消费者的组id
auto-commit-interval: 1000
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
logging:
config: classpath:log4j2.xml
7.实现日志监听,日志消息topic 在log4j2.xml文件中已配置
public void sendMsg() {
log.info("日志消息00000000000000");
}
//kafka 日志监听
@KafkaListener(topics = "kafkaLogTest")
public void listen1(ConsumerRecord<?, ?> record) {
System.out.printf(record.topic()+"----"+record.value()+"\n");
}