我是靠谱客的博主 会撒娇自行车,最近开发中收集的这篇文章主要介绍简单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的日志实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部