蹉跎莫遣韶光老,人生唯有读书好。这篇文章主要讲述logback kafkaAppender输出日志到kafka相关的知识,希望能为你提供帮助。
官网地址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.0-RC1< /version> < /dependency> < dependency> < groupId> ch.qos.logback< /groupId> < artifactId> logback-classic< /artifactId> < !--< version> 1.2.3< /version> < scope> runtime< /scope> --> < /dependency> < dependency> < groupId> ch.qos.logback< /groupId> < artifactId> logback-core< /artifactId> < !--< version> 1.2.3< /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"/> < producerConfig> bootstrap.servers=127.0.0.1:9092< /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】
推荐阅读
- Android Dagger2.0 学习一下
- NetCore AutoMapper的封装
- 记一次关于垃圾回收app的推广成功案例
- web app native apphybrid app比较
- android material design主题在线配色
- Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
- Android sqlite 使用框架
- android采用MVP漫画APP适配刘海屏小黄车主界面录音波浪动画综合APP等源码
- TestNG中运行测试用例(不使用Java编译器)