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

这篇具有很好参考价值的文章主要介绍了Log4j2 配置日志记录发送到 kafka 中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

官网文档:Log4j – Log4j 2 Appenders

依赖

				<!-- kafka client -->
				<dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
            <version>2.0.0</version>
        </dependency>

				<!-- 支持 scala -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api-scala_2.12</artifactId>
            <version>11.0</version>
        </dependency>

			   <!-- 核心依赖 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.20.0</version>
        </dependency>

配置

注意这里有个 syncSend 控制着是否异步发送,false 使用异步发送也就是会攒小批发送,拥有更高的吞吐量,但相对来说延迟也会增加,建议生产环境开启,本地环境关闭,否则可能会出现程序结束了直接退出,导致 kafka 的批攒的数据没有来得及发送,自然也会导致数据丢失。

此外,如果不想每个类的日志都采集到 kafaka 里面,我们可以定义个类,通过这个类发送的日志才收集到 kafka 里面,可以参考下面的配置例子。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Properties>
        <Property name="kafkaServers">localhost:9092</Property>
    </Properties>
    <Appenders>
        <!-- 定义 Kafka Appender -->
        <Kafka name="KafkaAppender" syncSend="false" topic="recomm-system-log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            <!-- 在此处配置 Kafka 的连接信息 -->
            <Property name="bootstrap.servers">${kafkaServers}</Property>
        </Kafka>

        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </Console>

    </Appenders>
    <Loggers>

        <Root level="info">
            <!-- 将日志记录到控制台 Appender -->
            <AppenderRef ref="ConsoleAppender" />
        </Root>

        <Logger name="log2kafka.KafkaSender$">
            <Appender-ref ref="KafkaAppender"/>
        </Logger>
    </Loggers>
</Configuration>

例子

这里用的是 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 命令行查看数据:文章来源地址https://www.toymoban.com/news/detail-691492.html

(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

到了这里,关于Log4j2 配置日志记录发送到 kafka 中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【springboot】--集成log4j2日志功能

    springboot2.0版本默认集成logback日志框架,由于项目业务采集各种日志(系统日志、接口调用日志、业务日志)等,需要做一些定制化的业务。为了,这里介绍如何集成log4j2,按照规格输出日志,另外按照要求输出成文件。下面将具体介绍! pom引入

    2024年02月12日
    浏览(57)
  • springboot 日志管理之 log4j2

    1、log4j2 简介         Apache Log4j2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。 被誉为是目前最优秀的Java日志框架。 2、项中引入 log4j2 的方式 2.1、springboot 项目中 2.2、普通 java 项目中 3、在项

    2024年01月15日
    浏览(45)
  • SpringBoot整合Log4j2日志框架

    SpringBoot底层默认使用logback日志框架。 切换使用Log4j2日志框架。 pom.xml配置 log4j2-spring.xml 文件命名固定 log4j2-spring.xml ,让SpringBoot加载配置文件。 文件名为 log4j2.xml ,文件将绕过SpringBoot直接调用日志框架。 控制台日志输出信息 日志文件生成 说明:日志文件生成在当前项目下

    2024年03月09日
    浏览(48)
  • log4j2同步日志引发的性能问题

    在项目的性能测试中,相关的接口的随着并发数增加,接口的响应时间变长,接口吞吐不再增长,应用的CPU使用率较高。 谁导致的CPU较高,阻塞接口TPS的增长?接口的响应时间的调用链分布是什么样的,有没有慢的点? 1)使用火焰图分析应用的CPU如下,其中log4j2日志占了

    2024年02月08日
    浏览(37)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    随着软件系统的发展系统业务越来越多、逻辑越来越复杂、代码量越来越多,伴随着容易出现的bug也会越来越多,不论是开发测试阶段还是生产阶段都需要将这些错误及时的捕捉记录下来,方便解决这些问题,否则针对出现的异常无从下手;此时就需要一些日志框架来完成这

    2024年02月15日
    浏览(45)
  • Springboot日志框架logback与log4j2

    目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot底层是使用slf4j+logback的方式进行日志记录 trace:级别最低 debug:调试级别的,常用于跟踪程序的进展 info:普通的打印信息(默认的日志级别) warn:警告级别,不影响

    2024年01月19日
    浏览(46)
  • Springboot整合与使用log4j2日志框架【详解版】

    Spring Boot默认使用LogBack,但是我们没有看到显示依赖的jar包,其实是因为所在的jar包spring-boot-starter-logging都是作为spring-boot-starter-web或者spring-boot-starter依赖的一部分。 如果这里要使用Log4j2,需要从spring-boot-starter-web中去掉spring-boot-starter-logging依赖,同时显示声明使用Log4j2的依

    2024年02月11日
    浏览(46)
  • 应用中日志的优雅使用(整合log4j2与SLF4J)

    应用中不可直接使用日志系统( Log4j、 Logback) 中的 API,而应依赖使用日志框架( SLF4J、 JCL–Jakarta Commons Logging) 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 日志框架( SLF4J、 JCL–Jakarta Commons Logging)的使用方式(推荐使用 SLF4J) 所有

    2023年04月09日
    浏览(39)
  • Spring Boot 配置 log4j2

    本教程中,我们将学习如何在 Spring Boot 中整合使用 Log4j2 日志框架。 Spring Boot 中默认使用 Logback 作为日志框架,接下来我们将学习如何在 Spring Boot 中集成与配置 Log4j2。在配置之前,我们需要知道的是 Log4j2 是 Log4j 的升级版,它在 Log4j 的基础上做了诸多改进: 1.异步日志;

    2024年02月08日
    浏览(33)
  • 日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

    文中代码示例获取:关注【 Qin的学习营地 】,回复【 日志框架梳理 】 在了解日志框架时总会列出一系列框架:Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2,这么多框架让人感到混乱,该怎么选取、该怎么用。接下来,让我们逐步理清这些框架及之间的关系。 首先来了解日志

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包