前言
log4j2 在 2.11.0 之后的版本,已经内置了 KafkaAppender 支持可以将打印的日志直接发送到 kafka 中,在这之前如果想要集中收集应用的日志,就需要自定义一个 Layout 来实现,相对来说还是比较麻烦的。
官网文档:Log4j – Log4j 2 Appenders
依赖
org.apache.kafka kafka-clients2.0.0 org.apache.logging.log4j log4j-api-scala_2.1211.0 org.apache.logging.log4j log4j-api2.20.0 org.apache.logging.log4j log4j-core2.20.0
配置
注意这里有个 syncSend 控制着是否异步发送,false 使用异步发送也就是会攒小批发送,拥有更高的吞吐量,但相对来说延迟也会增加,建议生产环境开启,本地环境关闭,否则可能会出现程序结束了直接退出,导致 kafka 的批攒的数据没有来得及发送,自然也会导致数据丢失。
此外,如果不想每个类的日志都采集到 kafaka 里面,我们可以定义个类,通过这个类发送的日志才收集到 kafka 里面,可以参考下面的配置例子。
localhost:9092 ${kafkaServers}
例子
这里用的是 scala,如果是 java 基本大同小异
package log2kafka import org.apache.logging.log4j.scala.Logging object KafkaSender extends Logging { def send(msg:Any): Unit ={ logger.info(msg.toString) } def main(args: Array[String]): Unit = { logger.info("print msg to kafka") } }
kafka 命令行查看数据:
(base) ➜ temp kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testlog 2023-08-30 19:42:05 INFO KafkaSender$:12 - print msg to kafka
猜你喜欢
- 4小时前【python】15.图像和办公文档处理
- 4小时前自学(网络安全)黑客——高效学习2024
- 4小时前vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
- 4小时前【JaveWeb教程】(15) SpringBootWeb之 响应 详细代码示例讲解
- 4小时前基于Java Web的图书管理系统的设计与实现
- 4小时前【论文阅读笔记】4篇Disentangled representation learning用于图像分割的论文
- 4小时前thinkphp 命令行执行
- 4小时前部署YUM仓库及NFS共享存储
- 4小时前Kafka系列 - Kafka一篇入门
- 58分钟前柠檬英语(柠檬英语复数怎么读)
网友评论
- 搜索
- 最新文章
- 热门文章