011- Kafka应用之Kafka与Log4j的整合
Posted BearData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了011- Kafka应用之Kafka与Log4j的整合相关的知识,希望对你有一定的参考价值。
我们经常在项目中需要查看日志,定位问题,日志是项目开发中很重要的一块,一般我们使用log4j来输出日志,但通过log4j将日志保存到服务器的日志文件中,后续定位时需要打开文件,进行搜索,比较繁琐。目前比较成熟的日志框架ELK(Elasticsearch,Logstash,Kibana),即通过logstash搜集,然后将日志输出到Elastaicsearch中,最后通过Kibana展示出来,在这里面充分利用了Elasticsearch的文本搜索优势,我们通过关键词定位日志的位置。当然,Logstash可以替换为其他的数据采集工具,如Flume,Kafka等,只要能和Elasticsearch对接上即可。本篇我们将介绍如何将log4j的日志输出到kafka,后续篇章中我们会详细介绍Kafka+Elasticsearch+Kibana。
一. 环境准备
1. pom文件
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-log4j-appender</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.16</version>
</dependency>
2. log4j.properties配置文件
### 设置###
log4j.rootLogger=info,STDOUT,kafka,DEBUG
# appender kafka
log4j.appender.kafka=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.kafka.topic=beardata
log4j.appender.kafka.syncSend=true
log4j.appender.kafka.brokerList=bigdata000:6667,bigdata002:6667
log4j.appender.kafka.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka.layout.ConversionPattern=%d [%-5p] [%t] - [%l] %m%n
### 输出信息到控制抬 ###
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.out
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
3. 代码
public class KafkaLog4j {
private static final Logger logger = LoggerFactory.getLogger(KafkaLog4j.class);
public static void main(String args[]) {
logger.info("hello,info");
for (int i = 0; i < 10; i++) {
logger.info("beardata---" + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
二. 验证
我们在控制台开启一个消费者,然后运行KafkaLog4j的 main函数。我们可以看到log4j输出的日志都输出到了kafka消息中。
本篇我们主要介绍了Kafka与Log4j的整合,下一篇我们将介绍Kafka与Springboot的整合。
长按二维码,关注BearData
以上是关于011- Kafka应用之Kafka与Log4j的整合的主要内容,如果未能解决你的问题,请参考以下文章