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

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

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

使用maven引入所需要的jar包

     <dependency>
<groupId>com.github.danielwegener</groupId>
<artifactId>logback-kafka-appender</artifactId>
<version>0.2.-RC1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<!--<version>1.2.</version>
<scope>runtime</scope>-->
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<!--<version>1.2.</version>-->
</dependency>

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

<appender name="kafkaAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">

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

自定义regular Filter

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.vcredit.rmcloud.gateway.bean.JsonResult;
import com.vcredit.rmcloud.gateway.bean.RmcloudConstant;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; /**
* 扩展logback filter,过虑rmcloud的日志,输出到kafka
*
* @author lee
* @date 2018/9/11
*/ @Slf4j
public class LogKafkaFilter extends Filter<ILoggingEvent> {
@Override
public FilterReply decide(ILoggingEvent iLoggingEvent) { String message = iLoggingEvent.getMessage();
/**
* 此处是业务代码,可根据自己 的业务代码实现
*/
if (StringUtils.isNotBlank(message)) {
       
JSONObject auditLog = JSON.parseObject(message);
log.info("responseBody:" + auditLog.get("responseBody").toString());
JsonResult jsonResult = JSON.parseObject(auditLog.get("responseBody").toString(), JsonResult.class);
if (auditLog.get("serviceId").toString().startsWith(RmcloudConstant.SERVICE_ID_RMCLOUD_START)) {
return FilterReply.ACCEPT;
} }
return FilterReply.DENY;
}
}

将自定义的Filter加入到kafkaAppender中

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

这样过滤不需要日志内容

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

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. 两台Linux服务器之间复制文件

    一.scp 1.简介 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的 2.软件安装 ...

  2. js中使用showModelDialog中下载文件的时候,闪一下后无法下载

    在js中使用showModelDialog中下载文件的时候,会因为showModelDialog自动设置target为_self导致下载文件“只会闪一下”就消失掉 在吧target设置为_blank后 ...

  3. 由consequence忽然发现英语也挺有意思

    con- 是拉丁语前缀, 有 with, together 的意思. con- 和 com- 一样的. 只是因为 在 b p m 前发 m 音更方便, 所以这些音前的 con- 变为 com- (例 ...

  4. pip改源

    临时 python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.10 # ==后边指定版本号,也可以不指定 ...

  5. Docker端口映射与容器互联

    Docker提供了两个功能来满足访问的基本需求:一是允许映射容器内应用的服务端口到本地宿主主机:另一个是互联机制实现多个容器间通过容器名来快速实现访问. 一.端口映射实现访问容器 当容器中运行一些网络 ...

  6. SerialPort项目配置

    app的build.gradle下: apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultCon ...

  7. Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理

    安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改.下面对centos7版本下网卡重命名操作做一记录:1)编辑网卡信息[root@linux-node2~]# cd ...

  8. 给查询出的SQL记录添加序号列,解决方法有以下两种

    第一: select ROW_NUMBER() OVER (ORDER BY a.字段 ASC) AS XUHAO,a.* from table a (table 为表名,字段为表a中的字段名) 第二 ...

  9. VB VB 定义及区别

    VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的.面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序.VC是Vis ...

  10. 1.Java

    面向对象:封装,继承,多态 A组合B:那么B就可以调用A中的方法 A关联B:A中的成员变量是用B声明的 A和B的依赖关系:A中某个方法的参数是B声明的对象或者返回值类型是B的数据类型 Static方法 ...