最好用的 Kafka Json Logger Java客户端,赶紧尝试一下

最好用的 Kafka Json Logger Java客户端。
slf4j4json
最好用的 Kafka Json Logger 库;不尝试一下可惜了!
Description
一款为 Kafka 提供的 json logger 客户端,支持将 json 格式的 log 输出到 kafka、文件、控制台。
支持 slf4j 的全部功能。
比 KafkaLog4jAppender 更好用,可配置性更好。
支持 close logger, 在程序关闭之前 flush log to kafka。
支持链式编程模式,方便用户使用。
maven dependency
- 添加repository
<repositories>
<repositories>
<repository>
<id>release</id>
<url>https://raw.github.com/joyang1/slf4j4json/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</repositories>
- 添加dependency
<dependency>
<groupId>cn.tommyyang</groupId>
<artifactId>slf4j4json</artifactId>
<version>1.4.0</version>
</dependency>
使用
需要配置log4j.properties
因为该 jar 包同样是依赖于 slf4j, 所以按 log4j 配置 log4j.properties 即可正常使用。
log4j.properties 的详细配置说明请参考log4j 配置说明
log4j.rootLogger=DEBUG,console
#输出日志到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=all
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c\:%L]-[%p] %m%n
slf4j4json使用
- 直接打印
跟 slf4j 类似,不过该库提供链式编程方式,便于用户使用。
//通过LoggerFactory获取一个logger
final static Logger logger = LoggerFactory.getLogger(Test.class);
//打印必须调用log()方法
logger.info().field("key1", "value1").intField("key2", 1).log();
logger.warn().field("key1", "value1").intField("key2", 1).log();
logger.debug().strField("key1", "value1").longField("key2", 1L).log();
logger.trace().strField("key1", "value1").intField("key2", 1).log();
logger.error().strField("key1", "value1").intField("key2", 1).log();
- 比如有一些键值对要重复赋值,使用getLogger方法,实例如下
JsonLogger jsonLogger = logger.info().strField("appname", "app").getLogger();
jsonLogger.strField("msg","infotest1").intField("port", 2).log();
jsonLogger.field("msg","infotest2").longField("long", 23L).log();
- 1.4.0更新, 只提供getLogger方法
配置了 LogConfig 则打印 log 到 kafka,否则打印 log 到 file;
如果打印 log 到 file 文件或者控制台,则需要配置 log4j.properties,具体如何配置见使用;
如果只用打印 log 到 kafka,则不用配置 log4j.properties。
LogConfig conf = new LogConfig("Vinci", LogLevel.INFO, "localhost:9092", "admin-app-log");
LoggerFactory.openKafkaLogger(conf);
Logger logger = LoggerFactory.getLogger();
logger.info().strField("test", "test-info").log();
logger.error().strField("test", "test-error").log();
logger.warn().strField("test", "test-warn").log();
logger.debug().strField("test", "test-debug").log();
输出
{"key1":"value1","key2":1,"index":"server-end-log","host":"DESKTOP-2B1VG6J","level":"info","time":1535021174}
version
1.0版本实现 JsonLog For Java 的基本功能
使用 KafkaLog4jAppender 打印 log 到 Kafka
1.1版本- 修复JsonLogger jsonLogger = logger.info().strField("appname", "app").getLogger(); 出现重复内容的bug
1.2版本去掉log中自带的index键值对
repository修改
<repositories>
<repository>
<id>release</id>
<url>https://raw.github.com/joyang1/slf4j4json/mvn-repo/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
1.3.0版本添加kafka logger的实现,批量打印log到kafka
10s或者5m flush一次
1.4.0版本- 优化logger实现
欢迎 fork 和 star
Github地址:slf4j4json
最好用的 Kafka Json Logger Java客户端,赶紧尝试一下的更多相关文章
- 4 kafka集群部署及kafka生产者java客户端编程 + kafka消费者java客户端编程
本博文的主要内容有 kafka的单机模式部署 kafka的分布式模式部署 生产者java客户端编程 消费者java客户端编程 运行kafka ,需要依赖 zookeeper,你可以使用已有的 zo ...
- java kafka单列模式生产者客户端
1.所需要的依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- 报错:java.lang.AbstractMethodError: nl.techop.kafka.KafkaHttpMetricsReporter.logger()Lcom/typesafe/scalalogging/Logger;
报错背景: CDH启动kafka的时候出现报错情况,并且报错的节点挂掉. 报错现象: Exiting Kafka due to fatal exception java.lang.AbstractMe ...
- 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端
1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...
- kafka java客户端编程
kafka_2.10-0.8.1.1 maven <dependencies> <dependency> <groupId>org.apache.kafka< ...
- kafka的Java客户端示例代码(kafka_2.11-0.8.2.2)
1.使用Producer API发送消息到Kafka 从版本0.9开始被KafkaProducer替代. HelloWorldProducer.java package cn.ljh.kafka.ka ...
- kafka的Java客户端示例代码(kafka_2.12-0.10.2.1)
使用0.9开始增加的KafkaProducer和KafkaConsumer. Pom.xml <project xmlns="http://maven.apache.org/POM/4 ...
- elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)
一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RE ...
- Solr JAVA客户端SolrJ 4.9使用示例教程
http://my.oschina.net/cloudcoder/blog/305024 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.So ...
随机推荐
- vue的生产环境dependencies 和开发环境devDependencies,二者的理解和区别
- java上传大文件(局域网环境)
文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...
- jsoncpp 能做什么
jsoncpp能做什么1)跨平台跨语言动态信息数据交换.2)作为格式化配置文件使用3)对应数据结构数据类型做序列化和反序列化4)value::toStyledString 格式化json串输出 一.w ...
- I - Rake It In
题目链接:https://nanti.jisuanke.com/t/A1538 题意:给一个4*4的方阵,k个回合,a和b轮流选一个2*2的矩阵和,a要使和最大,b要使和最小,选完后2*2矩阵要逆时针 ...
- 13 November
[HEOI2015] 定价 BZOJ 4027: 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是 ...
- WPF Good UI 2
自定义一个漂亮的window窗口UI <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation& ...
- 二十五、python中pickle序列学习(仅python语言中有)
1.pickle序列介绍:提供4个关键字:dumps,dump,loads,load 语法:f.write(pickle.dumps(dict))=pickle.dump(dict,f) " ...
- 了解SELlinux
selinux是mac: mandatory access control. 强制访问控制. 是经过了20年的mac研究基础上开发的安全子系统. 访问控制分为三种: dac: di'scretiona ...
- 安装fedora23后的一些杂项设置
Boxes是创建虚拟机的技术 tweak: 拧, 捏; 微调 he gave the boy's ear a painful tweak. it's a small tweak over the ra ...
- Django学习之路由系统
一.Django的路由系统 1.URLconf配置 基本格式: 参数说明: 2.正则表达式详解 基本配置 注意事项 补充说明 3.分组命名匹配 URLconf匹配的位置 捕获的参数永远都是字符串 视图 ...