官网地址https://github.com/danielwegener/logback-kafka-appender

本文以spring boot项目为基础,更多的信息,请参考官网

  1. https://github.com/danielwegener/logback-kafka-appender

使用maven引入所需要的jar包

  1.      <dependency>
  2. <groupId>com.github.danielwegener</groupId>
  3. <artifactId>logback-kafka-appender</artifactId>
  4. <version>0.2.-RC1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>ch.qos.logback</groupId>
  8. <artifactId>logback-classic</artifactId>
  9. <!--<version>1.2.</version>
  10. <scope>runtime</scope>-->
  11. </dependency>
  12. <dependency>
  13. <groupId>ch.qos.logback</groupId>
  14. <artifactId>logback-core</artifactId>
  15. <!--<version>1.2.</version>-->
  16. </dependency>

配置logback-spring.xml,增加一个appender节点

  1. <appender name="kafkaAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">
  2.  
  3. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  4. <pattern>%message %n</pattern>
  5. <charset>utf8</charset>
  6. </encoder>
  7. <topic>rmcloud-gateway-audit-log</topic>
  8. <keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>
  9. <deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
         <!--注意此处应该是spring boot中的kafka配置属性-->
  10. <producerConfig>bootstrap.servers=127.0.0.1:9092</producerConfig>
         <producerConfig>retries=1</producerConfig>
  11.  
  12.     <producerConfig>batch-size=16384</producerConfig>
  1.     <producerConfig>buffer-memory=33554432</producerConfig>
        <producerConfig>properties.max.request.size==2097152</producerConfig>
  1. </appender>
  1. <root level="INFO">
  2. <appender-ref ref="kafkaAppender"/>
    </root>

自定义regular Filter

  1. import ch.qos.logback.classic.spi.ILoggingEvent;
  2. import ch.qos.logback.core.filter.Filter;
  3. import ch.qos.logback.core.spi.FilterReply;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.vcredit.rmcloud.gateway.bean.JsonResult;
  7. import com.vcredit.rmcloud.gateway.bean.RmcloudConstant;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.apache.commons.lang3.StringUtils;
  10.  
  11. /**
  12. * 扩展logback filter,过虑rmcloud的日志,输出到kafka
  13. *
  14. * @author lee
  15. * @date 2018/9/11
  16. */
  17.  
  18. @Slf4j
  19. public class LogKafkaFilter extends Filter<ILoggingEvent> {
  20. @Override
  21. public FilterReply decide(ILoggingEvent iLoggingEvent) {
  22.  
  23. String message = iLoggingEvent.getMessage();
  24. /**
  25. * 此处是业务代码,可根据自己 的业务代码实现
  26. */
  27. if (StringUtils.isNotBlank(message)) {
           
  28. JSONObject auditLog = JSON.parseObject(message);
  29. log.info("responseBody:" + auditLog.get("responseBody").toString());
  30. JsonResult jsonResult = JSON.parseObject(auditLog.get("responseBody").toString(), JsonResult.class);
  31. if (auditLog.get("serviceId").toString().startsWith(RmcloudConstant.SERVICE_ID_RMCLOUD_START)) {
  32. return FilterReply.ACCEPT;
  33. }
  34.  
  35. }
  36. return FilterReply.DENY;
  37. }
  38. }

将自定义的Filter加入到kafkaAppender中

  1. <appender name="kafkaRmcloudAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">
  2. <filter class="com.xx.xx.xx.filter.LogKafkaFilter"/>
  3. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  4. <pattern>%message %n</pattern>
  5. <charset>utf8</charset>
  6. </encoder>
  7. <topic>rmcloud-gateway-audit-log</topic>
  8. <keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>
  9. <deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
  10. <producerConfig>bootstrap.servers=${kafkaServers}</producerConfig>
  11. </appender>

这样过滤不需要日志内容

另外,在github上发现另外一个KafkaAppener

  1. https://github.com/johnmpage/logback-kafka

logback kafkaAppender输出日志到kafka的更多相关文章

  1. logback异步输出日志(生产者消费者模型),并非批量写入日志。

    一直对logback异步输出日志误解为异步批量写入日志. 今天看了源代码. 首先logback的异步日志是如何配置的: <!-- 管理端用户行为日志异步输出,异步的log片段必须在同步段后面,否 ...

  2. logback不输出日志消息,且SLF4J绑定源错误

    我之前的项目已经成功使用过logback作为日志输出,但是今天新项目在使用的时候,不输出日志信息. 最后终于找到问题所在,并成功解决.解决步骤如下: 第一步:检查pom.xml 按照以往惯例,我先检查 ...

  3. (七)logback 异步输出日志

    <!-- 异步输出 --> <appender name="ASYNC-INFO" class="ch.qos.logback.classic.Asyn ...

  4. SiftingAppender logback 动态 输出 日志 到指定日志文件

    SiftingAppender https://www.mkyong.com/logging/logback-different-log-file-for-each-thread/

  5. springboot的日志框架slf4j (使用logback输出日志以及使用)

    1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...

  6. logback KafkaAppender 写入Kafka队列,集中日志输出.

    为了减少应用服务器对磁盘的读写,以及可以集中日志在一台机器上,方便使用ELK收集日志信息,所以考虑做一个jar包,让应用集中输出日志 网上搜了一圈,只发现有人写了个程序在github 地址:https ...

  7. Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL

    文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...

  8. SpringBoot+logback实现按业务输出日志到不同的文件

        公司有个项目,需要和几个第三方系统对接.这种项目,日志一定要记录详细,不然出了问题就是各种甩锅.虽然项目里面和第三方系统对接相关的业务记录的日志很详细,但是由于整个项目的日志都在一个文件中,排 ...

  9. SpringBoot使用logback输出日志并打印sql信息 --经典---

    最近在学习springboot以及一些springcloud插件的使用,其中发现默认的配置并不能打印一些有用的日志,所以需要自定义一些日志输出方式以便于查看日志排查问题,目前只整理了两种使用方式,如下 ...

随机推荐

  1. 把一个对象转成map对象

    import java.lang.reflect.Field;import java.util.HashMap; public class Util { public static HashMap&l ...

  2. 新手尝试Android studio连接mumu调试程序

    由于Android studio本身虚拟机比较卡在安装as的时候就没有安装.于是自己安装了一款手机模拟器mumu模拟器.我想真机可以调试那么摸仪器应该也可以,于是就从网上找资料,其实连接很简单. 1. ...

  3. Django框架 连接Oracle -ServerName方式报错

    连接前: 修改后:

  4. Spring3基础原理解析

    一.Spring3主要含义 Spring3是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 注:IOC的作用:对象依赖的其他对象通过被动的形式传递进来而不是这个对象常见或者查找依赖对象 ...

  5. ASP.NET页面跳转的三大方法详解

    ASP.NET页面跳转有什么方法呢?,现在给大家介绍三种方法,他们的区别是什么呢?让我们开始吧: ASP.NET页面跳转1.response.redirect 这个跳转页面的方法跳转的速度不快,因为它 ...

  6. 应用程序调用dll动态库,参数有vector时崩溃的问题

    引用:http://blog.csdn.net/guoliushui/article/details/43017339 今天跟同事遇到了一个问题,问题背景: 一个动态库Tst.dll: 一个应用程序A ...

  7. 51nod1986 Jason曾不想做的数论题

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1986 方便起见,公式中的区间内只考虑整数,X的gcd,lcm定义为每个元 ...

  8. git切换远程仓库地址

    $ git remote  -vorigin  http://192.168.1.100/aaa/Project.git (fetch)origin  http://192.168.1.100/aaa ...

  9. MySQL binlog2sql-闪回数据

    binlog2sql 从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途 数据快速回滚(闪回) 主从切换后新mast ...

  10. 使用Microsoft自带的小工具将可执行文件(.exe)注册为系统服务

    首先,我们从Microsoft下载Windows Resource Kits,Download 下载完成后,运行rktools.exe进行安装. 安装完成后,我们打开安装目录,将其中的"in ...