上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Log4j2 配置日志记录发送到 kafka 中

guduadmin44小时前

前言

log4j2 在 2.11.0 之后的版本,已经内置了 KafkaAppender 支持可以将打印的日志直接发送到 kafka 中,在这之前如果想要集中收集应用的日志,就需要自定义一个 Layout 来实现,相对来说还是比较麻烦的。

官网文档:Log4j – Log4j 2 Appenders

依赖

				
				
            org.apache.kafka
            kafka-clients
            2.0.0
        
				
        
            org.apache.logging.log4j
            log4j-api-scala_2.12
            11.0
        
			   
        
            org.apache.logging.log4j
            log4j-api
            2.20.0
        
        
            org.apache.logging.log4j
            log4j-core
            2.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

网友评论

搜索
最新文章
热门文章
热门标签