我是靠谱客的博主 会撒娇自行车,最近开发中收集的这篇文章主要介绍简单spring boot+log4j+flume+kafka的日志实现简单spring boot+log4j+flume+kafka的日志实现,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
简单spring boot+log4j+flume+kafka的日志实现
在安装好zookeeper、Kafka、flume的情况下
1.springboot的pom.xml导入依赖
<dependency>
<groupId>org.apache.flume.flume-ng-clients</groupId>
<artifactId>flume-ng-log4jappender</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.6</version>
</dependency>
2.在resources文件下 新建log4j.properties文件 , 并添加如下配置
log4j.rootLogger=INFO,console,flume #日志级别,appenderName, appenderName
# console appender config
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c:%L] - %m%n
# flume appender config
log4j.appender.flume=org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname=192.168.23.128 # flume所在服务器地址,可以是本地,也可是远程
log4j.appender.flume.Port=44444
log4j.appender.flume.UnsafeMode=true
log4j.appender.flume.layout=org.apache.log4j.PatternLayout
log4j.appender.flume.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c:%L] - %m%n
3. 编写简单应用程序 ,在Java包下的任何目录都行
import org.apache.log4j.Logger;
public class ProducerLog {
protected static final Logger LOG=Logger.getLogger(ProducerLog.class);
public static void main(String[] args) {
LOG.debug("这是一条debug级别的日志!");
LOG.info("这是一条info级别的日志!");
LOG.error("这是一条error级别的日志!");
LOG.fatal("这是一条fatal级别的日志!");
}
}
在没启动flume服务时运行程序,会出现如下错误
4.配置flume服务
在flume的test下创建demo.properties文件,source端监听log4j发送消息的端口,sink端绑定到Kafka topic的demo中。
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = avro
a1.sources.r1.bind = 192.168.23.128 #flume所在服务器的IP
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.bootstrap.servers=192.168.23.128:9092 #Kafka所在服务器的IP
a1.sinks.k1.kafka.topic=log4j-flume-kafka
a1.sinks.k1.serializer.class=kafka.serializer.StringEncoder
a1.sinks.k1.kafka.producer.acks=1
a1.sinks.k1.custom.encoding=UTF-8
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
5.启动服务
1.启动zookeeper(在zookeeper目录下)
bin/zkServer.sh start
2.启动Kafka(在Kafka目录下)
bin/kafka-server-start.sh -daemon /config/server.properties
3.创建topic(demo)
bin/kafka-topics.sh --create --zookeeper 192.168.23.128:2181 --replication-factor 1 --partitions 1 --topic demo
4.启动kafka消费者
bin/kafka-console-consumer.sh --bootstrap-server 192.168.23.128:9092 --topic demo --from-beginning
5.启动flume服务
bin/flume-ng agent -n a1 -c conf -f conf/demo.properties
6.运行Java程序,观察控制台输出及Kafka消费端
控制台输出
Kafka消费端
这是下篇Flume消费Kafka数据存储到HDFS,两篇合在一起是完整的数据采集到存储
最后
以上就是会撒娇自行车为你收集整理的简单spring boot+log4j+flume+kafka的日志实现简单spring boot+log4j+flume+kafka的日志实现的全部内容,希望文章能够帮你解决简单spring boot+log4j+flume+kafka的日志实现简单spring boot+log4j+flume+kafka的日志实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复