SpringBoot通过log4j2将日志写到kafka

拼搏现实的明天。 2023-07-25 14:13 92阅读 0赞

SpringBoot通过log4j2将日志写到kafka

1.导入坐标

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-log4j2</artifactId>
  4. </dependency>

1.1,排除spring-boot-starter-web里的log包

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-logging</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>

2.编写资源文件
2.1在resources目录下编写log4j-spring-kafka.xml

  1. <Configuration status="warn" monitorInterval="30" strict="true" schema="Log4J-V2.2.xsd">
  2. <Appenders>
  3. <!-- 输出到控制台 -->
  4. <Console name="Console" target="SYSTEM_OUT">
  5. <!-- 需要记录的级别 -->
  6. <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
  7. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
  8. </Console>
  9. <!-- 输出错误日志到Kafka topic 你自己的topic,bootstrap.servers 对应你自己的ip和端口-->
  10. <Kafka name="KAFKA" topic="productscanlog">
  11. <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
  12. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n" />
  13. <Property name="bootstrap.servers">192.168.30.137:9092</Property>
  14. </Kafka>
  15. </Appenders>
  16. <Loggers>
  17. <Root level="info"> <!-- 全局配置 -->
  18. <AppenderRef ref="Console" />
  19. <AppenderRef ref="KAFKA"/>
  20. </Root>
  21. <Logger name="com.yyj" level="trace" additivity="false">
  22. <AppenderRef ref="Console" />
  23. <AppenderRef ref="KAFKA"/>
  24. </Logger>
  25. <Logger name="org.apache.kafka" level="INFO" /> <!-- avoid recursive logging -->
  26. </Loggers>
  27. </Configuration>

2.2 在application.properties资源文件增加logging.config=classpath:log4j-spring-kafka.xml

  1. logging.config=classpath:log4j-spring-kafka.xml

3.在你代码增加日志打印就可以显示在kafka服务器的消费界面。

  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
  4. logger.info("kafka日志收集的日志。。。。。。。。");
  5. logger.error("kafka日志收集的日志。。。。。。。。error");

打印效果如图

  1. 2020-04-15 16:00:38,607:INFO http-nio-8080-exec-3 (HelloController.java:26) - kafka日志收集的日志。。。。。。。。
  2. 2020-04-15 16:00:38,609:ERROR http-nio-8080-exec-3 (HelloController.java:27) - kafka日志收集的日志。。。。。。。。error

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读